web-dev-qa-db-ja.com

Antビルドに外部jarライブラリを含める方法

次の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は以下を行う必要があります。

  1. 外部ライブラリ./lib/jbl.jarを追加
  2. アプリケーションを実行するとき、アプリケーションに2つの入力パラメーターを配置します
13
pipsik

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>
34
gvlasov

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>

これを行う方法の詳細については、以下を参照してください。

実行Java一貫した環境のプログラム

4
Mark O'Connor

これで試してください:

<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>
2
RaZieRSarE