0

path给定一个像下面这样的 Ant元素:

<path id="compile.classpath">
    <pathelement location="${common.jar}"/>
    <pathelement location="${servlet.jar}"/>
    <pathelement location="${j2ee.jar}"/>
    ...
</path>

如何创建一个jar包含所有文件的 uber-path而无需再次拼出所有文件名?以下工作,但包含重复的代码,而不是我想要的:

<jar jarfile="uber.jar" ...>
    <manifest> ... </manifest>
    <zipfileset src="${common.jar}"/>     // UNWANTED code duplication
    <zipfileset src="${servlet.jar}"/>
    <zipfileset src="${j2ee.jar}"/>
</jar>
4

2 回答 2

0

你应该能够做到这一点:

<jar destfile="über.jar">
    <manifest>
        <attribute name="Main-Class" value="${entry.point.class}"/>
    </manifest>
    <path refid="compile.classpath"/>
</jar>

我不明白为什么common.jar会有不需要的重复代码。此外,您通常不会在 jar 中包含 jar。

我认为您真正想要创建的是War File。一个war 文件可以包含多个jar,以及您要执行的类(通过<javac>任务编译的类)。在 META-INF/MANIFEST.MF 文件中,您包含一个Main-Class:指向类的条目,该类应该是您的战争的入口点。用户将能够执行您的战争:

 $ java -jar my.war
于 2013-01-14T14:41:41.363 回答
0

或者,您可以使用清单文件中列出的类路径创建一个可执行 jar:

于 2013-01-14T20:55:57.617 回答