我试图重新构建我的构建技术,用于创建依赖于常见的第三方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>
Run Code Online (Sandbox Code Playgroud)
我将Class-Path清单头设置为"." 在我的jar任务中但即使我将相关的jar文件放入与我的应用程序jar文件相同的目录中,这似乎也不起作用.我可以将它们一个一个地手动添加到Class-Path标头中,但我想知道,是否有更简单的方法来正确设置Class-Path标头?
rob*_*rob 37
这就是你所需要的:
<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>
Run Code Online (Sandbox Code Playgroud)
您可能已经看到,它假设您已编译Java类并将其输出到${build}.它还假设你已经将你的jar文件复制到了${dist}/lib.
也就是说,值得研究其他内置支持依赖的构建系统,例如Maven和Gradle.这些其他构建系统已经考虑了许多常见的项目结构和构建操作,因此您不必将所有内容编写到最后的细节.