我对路径projectRoot/lib/jsoup.jar
有依赖。
我的build.xml很简单:
<project name="Ant-Demo" default="main" basedir=".">
<property name="src.dir" value="src" />
<property name="build.dir" value="buildDirectory" />
<property name="dist.dir" value="dist" />
<property name="docs.dir" value="docs" />
<property name="lib.dir" value="lib" />
<path id="build.classpath">
<pathelement location="lib/jsoup-1.7.3.jar"/>
</path>
<target name="compile" depends="clean,makedir">
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" />
</target>
<target name="jar" depends="compile">
<jar destfile="${dist.dir}/AntDemo,jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="ant.test" />
</manifest>
</jar>
</target>
...........................................
这不起作用,因为jsoup.jar未包含在最终的AntDemo.jar中。
修改 当编译目标正在运行时,输出有警告:
compile:
[javac] D:\Software\es_ws\AntDemo\build.xml:30: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 2 source files to D:\Software\es_ws\AntDemo\buildDirectory
这个警告是什么意思?
谢谢!
答案 0 :(得分:2)
如果您需要在 AntDemo.jar 中包含jsoup.jar的内容,您可以通过多种方式进行操作。 我的建议是使用这个解决方案:
<jar destfile="${dist.dir}/AntDemo,jar" >
<manifest>
<attribute name="Main-Class" value="ant.test" />
</manifest>
<fileset dir="${build.dir}" />
<zipfileset includes="**/*.class" src="lib/jsoup-1.7.3.jar" />
</jar>
答案 1 :(得分:1)
编译类并指定类路径时,javac
类路径中的类和其他资源不会被复制到目标,ant或典型命令行javac
中。您需要手动复制它们,或者使用copy
或其他方式复制它们。