蚂蚁,jar文件和Class-Path哦我的

Jas*_*n S 22 java ant jar

我试图重新构建我的构建技术,用于创建依赖于常见的第三方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.这些其他构建系统已经考虑了许多常见的项目结构和构建操作,因此您不必将所有内容编写到最后的细节.