一尘不染

ant,jar文件和Class-Path哦,我的

java

我正在尝试重新构建用于创建依赖于常见的第三方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标头?


阅读 311

收藏
2020-12-03

共1个答案

一尘不染

这就是您所需要的:

<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

也就是说,值得研究其他对依赖项有内置支持的构建系统,例如Maven和Gradle。这些其他构建系统已经考虑了许多常见的项目结构和构建操作,因此您无需编写所有脚本,直到最后一个细节。

2020-12-03