J'ai les éléments suivants build.xml
:
<project>
<target name="clean">
<delete dir="./build"/>
</target>
<target name="compile">
<mkdir dir="./build/classes"/>
<javac srcdir="./src" destdir="./build/classes"/>
</target>
<target name="jar">
<mkdir dir="./build/jar"/>
<jar destfile="./build/jar/DependencyFinder.jar" basedir="./build/classes">
<manifest>
<attribute name="DependencyFinder" value="main"/>
</manifest>
</jar>
</target>
<target name="run">
<Java jar="./build/jar/DependencyFinder.jar" classname="${main-class}" fork="true"/>
</target>
</project>
Voici ma structure de répertoires:
/ build/lib/MagicFolder/Src /build.xml
Le dossier src
contient .Java
des dossiers.
Le chemin vers MagicFolder
doit être un paramètre d'entrée.
lib
possède une bibliothèque .jar externe qui devrait être incluse dans ma version.
build
dossier qui aura compilé .jar and
. class` fichiers
QUESTION: Comment dois-je changer mon build.xml
? Ma build.xml
devrait:
./lib/jbl.jar
Si vous devez ajouter un bocal à classpath pour compiler le code (désolé, ce que vous demandez n'est pas clair), vous devez changer <javac>
tâche de ressembler à ceci:
<javac srcdir="./src" destdir="./build/classes">
<classpath>
<pathelement path="lib/jbl.jar"/>
</classpath>
</javac>
Ou si vous devez ajouter le contenu de jbl.jar
dans le pot que vous créez, vous devez modifier votre <jar>
tâche de ressembler à ceci:
<jar destfile="./build/jar/DependencyFinder.jar" basedir="./build/classes>
<zipgroupfileset dir="lib" includes="jbl.jar" />
<manifest>
<attribute name="DependencyFinder" value="main"/>
<attribute name="Main-Class" value="org.ivanovpavel.YourMainClass"/>
</manifest>
</jar>
Pour ajouter des arguments à <Java>
appeler, utiliser imbriqué <arg>
éléments:
<target name="run">
<Java jar="./build/jar/DependencyFinder.jar:lib/jbl.jar" classname="dependencyfinder.DependencyFinder">
<arg value="Alexander Rosenbaum"/>
<arg value="Dmitry Malikov"/>
</Java>
</target>
Il existe deux façons d'exécuter un programme Java. L'utilisation de l'option "jar" est la plus pratique et s'appelle un fichier exécutable, mais pour le faire fonctionner, vous devez spécifier à la fois le Main classe et classpath dans le fichier manifeste comme suit:
<jar destfile="${jar.file}" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${jar.main.class}" />
<attribute name="Class-Path" value="${jar.classpath}" />
</manifest>
</jar>
Pour une réponse plus détaillée sur la façon de procéder, voir:
essayez avec ceci:
<target name="jar" depends="clean,compile" >
<jar destfile="./build/jar/DependencyFinder.jar">
<fileset dir="./lib" includes="jbl.jar,mysql*.jar" />
<fileset dir="./build/classes" excludes="**/form/*.class,**/orm/*.class,**/org/w3/xmldsig/*.class"/>
</jar>
</target>