次の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>
私のディレクトリ構造は次のとおりです。
/ build/lib/MagicFolder/Src /build.xml
フォルダーsrc
には.Java
ファイルが含まれます。
MagicFolder
へのパスは入力パラメーターである必要があります。
lib
には、ビルドに含める必要のある外部.jarライブラリがあります。
.jar and
。class`ファイルをコンパイルするbuild
フォルダー
質問:build.xml
を変更するにはどうすればよいですか?私のbuild.xml
は以下を行う必要があります。
./lib/jbl.jar
を追加Jarをクラスパスに追加してコードをコンパイルする必要がある場合(申し訳ありませんが、何を求めているのか明確ではありません)、<javac>
タスクを次のように変更する必要があります。
<javac srcdir="./src" destdir="./build/classes">
<classpath>
<pathelement path="lib/jbl.jar"/>
</classpath>
</javac>
または、作成中のjarにjbl.jar
の内容を追加する必要がある場合は、<jar>
タスクを次のように変更する必要があります。
<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>
<Java>
呼び出しに引数を追加するには、ネストされた<arg>
要素を使用します。
<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>
Javaプログラムを実行するには2つの方法があります。「jar」オプションを使用するのが最も便利で実行可能jarと呼ばれますが、それを機能させるためには両方のメインを指定する必要がありますマニフェストファイルのクラスとクラスパスは次のとおりです。
<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>
これを行う方法の詳細については、以下を参照してください。
これで試してください:
<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>