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

时间:2015-02-24 14:30:16

标签: java ant

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

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

Jars必须包含在某个默认顺序中。我想改变这个默认顺序。

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

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

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案。我在改变我的ANT文件后构建了Jar。现在,我的ANT构建在classpath中明确包含第三方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中有类路径条目,如下所示:

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