我有以下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>
这是我的目录结构:
/构建 / lib目录 / MagicFolder / src目录 /build.xml
文件夹src
包含.java
个文件。
MagicFolder
的路径应该是输入参数。
lib
有外部.jar库,应该包含在我的构建中。
build
文件夹,它将编译.jar and
.class`文件
问题:
我该如何更改build.xml
?我的build.xml
应该:
./lib/jbl.jar
答案 0 :(得分:34)
如果你需要在classpath中添加一个jar来编译代码(抱歉,你要求的内容还不是很清楚),那么你需要将<javac>
任务更改为:< / p>
<javac srcdir="./src" destdir="./build/classes">
<classpath>
<pathelement path="lib/jbl.jar"/>
</classpath>
</javac>
或者,如果您需要将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>
要为<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>
答案 1 :(得分:4)
运行java程序有两种方法。使用“jar”选项是最方便的,并且称为可执行jar,但是为了使其工作,您需要在清单文件中指定Main类和classpath,如下所示:
<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>
有关如何执行此操作的更详细答案,请参阅:
答案 2 :(得分:2)
试试这个:
<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>