如何在我的Ant构建中包含外部jar库

pip*_*sik 12 java ant build

我有以下内容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>
Run Code Online (Sandbox Code Playgroud)

这是我的目录结构:

/ build/lib/MagicFolder/Src /build.xml

文件夹src包含.java文件.

路径MagicFolder应该是输入参数.

lib 有外部.jar库,应该包含在我的构建中.

build将编译.jar and.class`文件的文件夹

问题:我该如何改变build.xml?我build.xml应该:

  1. 添加外部库 ./lib/jbl.jar
  2. 当我运行我的应用程序时,为我的应用程序输入2个输入参数

gvl*_*sov 34

如果你需要在classpath中添加一个jar来编译代码(抱歉,你要求的内容还不是很清楚),那么你需要将<javac>任务更改为如下所示:

<javac srcdir="./src" destdir="./build/classes">   
    <classpath>
        <pathelement path="lib/jbl.jar"/>
    </classpath>
</javac>
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要向jbl.jar正在创建的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>
Run Code Online (Sandbox Code Playgroud)

要添加要<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>
Run Code Online (Sandbox Code Playgroud)