使用 Ant 构建 jar 文件时如何设置类路径顺序?

How to set classpath order while building jar file using Ant?

我正在使用 zipgroupfileset 将 lib 文件夹中的所有 jar 打包到我的可执行应用程序 jar 文件中。

<zipgroupfileset dir="${lib.dir}" />

Jar 必须按某些默认顺序包含在内。我想更改此默认顺序。

关于我为什么要这个的说明:我的 Java 桌面应用程序使用许多第三方 jar,它们包含在 class 路径中。当我通过 Eclipse 运行 我的代码时,它工作正常。但是当我使用 ANT 构建 jar 文件时,它无法按预期工作。我确定它与 classpath 中的 jar 序列有关,就好像我在 Eclipse 中更改 jar 顺序一样,它在那里也失败了。

注意:我使用的是 Eclipse Kepler,Java7,Ant 1.8。

终于找到解决办法了。我在更改我的 ANT 文件后构建了 Jar。现在我的 ANT 构建在 classpath 中明确包含第 3 方 API,这是解决方案的关键。

<property name="lib.dir" value="lib" />

<manifestclasspath property="jar.classpath" jarfile="${lib.dir}/*.jar">
    <classpath refid="project.class.path"/>
</manifestclasspath>

<jar destfile="${jar.dir}/${jar.name}">
        <fileset dir="${class.root}" includes="**/*.*" />
        <manifest>
                <attribute name="Main-Class" value="${Main-Class}" />
                <attribute name="Class-Path" value="${jar.classpath}" />
        </manifest>
</jar>

以前我在 ANT 中有 class-path 条目如下:

<attribute name="Class-Path" value="." />