我正在尝试重新构建用于创建依赖于常见的第三方jar文件的Java jar文件的构建技术。(GlazedLists,Apache Commons等)
我一直将它们全部放入{Java JRE dir} / lib / ext中,以便JRE自动看到它们,但这导致了一些问题,例如不记得我需要分发某些jar文件,所以我想学习更明确地说。
所以我将它们全部移到c:\ appl \ java \ common \,将它们添加到Eclipse构建路径,并在我的ant文件中定义了它:
<path id="javac_classpath"> <fileset dir="${libDir}"> <include name="*.jar"/> </fileset> <fileset dir="c:/appl/java/common"> <include name="*.jar"/> </fileset> </path>
我将我的Class-Path清单标头设置为“。” 在我的jar任务中,但是即使我将相关的jar文件放在与我的应用程序jar文件相同的目录中,这似乎也不起作用。我可以将它们手动一个接一个地添加到Class- Path标头中,但是我想知道,是否有更简单的方法来正确设置Class-Path标头?
jar
这就是您所需要的:
<path id="build-classpath"> <fileset dir="${dist}/lib"> <include name="*.jar"/> </fileset> </path> <manifestclasspath property="lib.list" jarfile="${dist}/lib/myprog.jar"> <classpath refid="build-classpath"/> </manifestclasspath> <jar jarfile="${dist}/lib/myprog.jar" basedir="${build}" includes="com/my/prog/**" > <manifest> <attribute name="Main-Class" value="com.my.prog.MyProg"/> <attribute name="Class-Path" value="${lib.list}"/> </manifest> </jar>
您可能会看到,它假设您已经编译了Java类并将它们输出到${build}。它还假设您已将jarfiles复制到${dist}/lib。
${build}
${dist}/lib
也就是说,值得研究其他对依赖项有内置支持的构建系统,例如Maven和Gradle。这些其他构建系统已经考虑了许多常见的项目结构和构建操作,因此您无需编写所有脚本,直到最后一个细节。