Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20

    Inserire in un target ant file jar

    Ciao a tutti!........Avrei un dubbio riguardo ant.Come posso includere all'interno di un target ant che compila il mio progetto java più file jar che rappresentano delle librerie esterne da usare all'interno del mio progetto java?
    Questo è il mio file build.xml:




    <project name="Esempio" basedir="." >

    <target name="info">
    <echo message="File Ant per il mio progetto" />
    </target>

    <target name="init" depends="info">
    <echo message="Qui dentro penso ci inserisco il valore della home di jgraphx e sigar che poi saranno utili per inserire queste librerie all'interno
    del progetto"/>
    <property name="jgraphx.home" value="C:\Users\Daniele\Desktop\jgraphx" />
    <property name="sigar.home" value="C:\Users\Daniele\Desktop\sigar" />
    <property name="jboss.home" value="C:\Users\Daniele\Desktop\jboss-5.1.0.GA" />
    <property name="src.home" value="C:\Users\Daniele\workspace\Progetto" />
    <property name="webxml.home" value="C:\Users\Daniele\workspace\Progetto\WebCont ent\WEB-INF" />
    <property name="mia.home" value="C:\Users\Daniele\Desktop\EsempioAnt" />
    <property name="index.home" value="C:\Users\Daniele\workspace\Progetto\WebCont ent" />

    </target>

    <target name="compila" depends="init">
    <echo message="Compilazione del progetto" />
    <mkdir dir="${mia.home}\WEB-INF\classes" />
    <javac srcdir="${src.home}" classpath="${jgraphx.home}\lib\jgraphx.jar" destdir="${mia.home}"/>

    </target>

    <target name="war" depends="compila">
    <echo message="Creazione WAR" />
    <delete file="Esempio.war" />
    <war destfile="${mia.home}\Esempio.war" webxml="${webxml.home}\web.xml" >

    </war>
    </target>

    <target name="deploy" depends="war">
    <copy file="Esempio.war" todir="${jboss.home}\server\default\deploy"/>
    </target>

    </project>



    Grazie a chi mi può aiutare

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Inserire in un target ant file jar

    Originariamente inviato da DanPad85
    Ciao a tutti!........Avrei un dubbio riguardo ant.Come posso includere all'interno di un target ant che compila il mio progetto java più file jar che rappresentano delle librerie esterne da usare all'interno del mio progetto java?
    Alcune mie piccole web application le ho sviluppate usando Ant per il build.

    Grosso modo (abbozzato, non riporto tutto perché lungo), il mio build.xml è una cosa del tipo:

    codice:
    .......
    
      <target name="init">
          ......
        <property name="project.web.dir" value="web" />
        <property name="project.lib.dir" value="${project.web.dir}/WEB-INF/lib" />
      </target>
    
      .......
    
      <target name="compile" depends="prepare" description="Compiles the source code">
        <path id="project.build.class.path">
          <fileset dir="${project.lib.dir}">
            <include name="*.jar" />
          </fileset>
        </path>
    
        <javac srcdir="${project.src.dir}"
               destdir="${project.classes.dir}"
               debug="${project.build.debug}"
               source="${project.build.source}"
               target="${project.build.target}"
               classpathref="project.build.class.path" />
    
        <copy todir="${project.classes.dir}">
          <fileset dir="${project.src.dir}" excludes="**/*.java" />
        </copy>
      </target>
    
      ........
    Il nocciolo è che definisco un path di nome "project.build.class.path" che contiene un fileset che si "tira" dentro tutti i jar in quella directory referenziata. Così nel file di build non devo nemmeno elencare alcun nome specifico!

    Spero possa esserti utile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Puoi prendere spunto dall'XML seguente che è un pezzo di quello che a volte utilizzo per impacchettare applicazioni enterprise:

    codice:
    <?xml version="1.0"?>
    <project name="projectName" default="compile" basedir=".">
    	
    	<property name="src.dir" value="${basedir}/src"/>
    	<property name="src.lib.dir" value="${basedir}/lib"/>
    	<property name="build.dir" value="${basedir}/build"/>
    	<property name="build.classes.dir" value="${build.dir}/classes"/>
    	
    	<path id="classpath">
    		<fileset dir="${src.lib.dir}">
    			<include name="**/*.jar"/>
    		</fileset>
    		<pathelement location="${build.classes.dir}"/>
    	</path>
    	
    	<target name="compile">
    		<javac srcdir="${src.dir}"
    			destdir="${build.classes.dir}"
    			debug="on"
    			deprecation="on"
    			optimize="off"
    			includes="**">
    			<classpath refid="classpath"/>
    		</javac>
    	</target>
    	
    </project>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20

    Re: Re: Inserire in un target ant file jar

    Originariamente inviato da andbin
    Alcune mie piccole web application le ho sviluppate usando Ant per il build.

    Grosso modo (abbozzato, non riporto tutto perché lungo), il mio build.xml è una cosa del tipo:

    codice:
    .......
    
      <target name="init">
          ......
        <property name="project.web.dir" value="web" />
        <property name="project.lib.dir" value="${project.web.dir}/WEB-INF/lib" />
      </target>
    
      .......
    
      <target name="compile" depends="prepare" description="Compiles the source code">
        <path id="project.build.class.path">
          <fileset dir="${project.lib.dir}">
            <include name="*.jar" />
          </fileset>
        </path>
    
        <javac srcdir="${project.src.dir}"
               destdir="${project.classes.dir}"
               debug="${project.build.debug}"
               source="${project.build.source}"
               target="${project.build.target}"
               classpathref="project.build.class.path" />
    
        <copy todir="${project.classes.dir}">
          <fileset dir="${project.src.dir}" excludes="**/*.java" />
        </copy>
      </target>
    
      ........
    Il nocciolo è che definisco un path di nome "project.build.class.path" che contiene un fileset che si "tira" dentro tutti i jar in quella directory referenziata. Così nel file di build non devo nemmeno elencare alcun nome specifico!

    Spero possa esserti utile.

    Grazie è stato molto utile infatti ora prende tutti i jar che mi sono utili.Una curiosità visto che sono neofita nell'ambito di ant.Cosa si intende per build di una applicazione tramite ant?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    in genere compilare e creare jar/war tramite uno script ant (che metti in genere in build.xml)

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Inserire in un target ant file jar

    Originariamente inviato da DanPad85
    Cosa si intende per build di una applicazione tramite ant?
    Fare in modo che Ant tramite il file di build (il documento XML) esegua i "task" (lavori) nei target coinvolti. E di task predefiniti ne esistono svariati, dalla compilazione, lancio di applicazioni, creazione di zip/jar, creazione di directory, gestione dei pathname, ecc....

    Vedilo come se fosse un "batch" ma con una gestione "intelligente" delle dipendenze e con una astrazione dai comandi del sistema. Invece di dover usare un comando specifico di sistema, es. del (su Windows) o rm (su Linux), usi <delete file="blabla.bla"/>
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    20

    Re: Re: Re: Re: Inserire in un target ant file jar

    Originariamente inviato da andbin
    Fare in modo che Ant tramite il file di build (il documento XML) esegua i "task" (lavori) nei target coinvolti. E di task predefiniti ne esistono svariati, dalla compilazione, lancio di applicazioni, creazione di zip/jar, creazione di directory, gestione dei pathname, ecc....

    Vedilo come se fosse un "batch" ma con una gestione "intelligente" delle dipendenze e con una astrazione dai comandi del sistema. Invece di dover usare un comando specifico di sistema, es. del (su Windows) o rm (su Linux), usi <delete file="blabla.bla"/>

    Grazie della spiegazione.......Una altra domanda.Sto provando a creare un file jar che sia eseguibile ma ancora non riesco perchè dopo creato tentando di farlo partire la jvm launcher mi restituisce il seguente errore:could non find the main class.

    Quindi lei non trova la classe principale da lanciare che viene passata tramite il tag attribute.Cosa gli devo passare precisamente come value nel tag attribute come parametro name ha main class?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    la Main class in genere è specifica all'interno del file manifest, che puoi riempire con ant.
    Una rapida ricerca in rete su "ant create jar file" ti dà parecchi result, comunque puoi partire da qui

    codice:
      <jar destfile="${nome.jar}" compress="no">
                            <manifest>
                                    <attribute name="Built-By" value="${osenv.USER}" />
                                    <attribute name="Implementation-Version" value="${version}" />
                                    <attribute name="Implementation-Vendor" value="${vendor}" />
                                    <attribute name="Main-Class" value="path.to.Main.class.package" />
                            </manifest>
    </jar>
    ovviamente procurati un manuale ant e questo è specificato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.