Ant:如何创建包含<path>?</path> </jar>中的文件的<jar>

时间:2013-01-14 10:14:50

标签: ant jar path uberjar

给定一个Ant path元素,如下所示:

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

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

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

2 个答案:

答案 0 :(得分:0)

你应该可以这样做:

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

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

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

 $ java -jar my.war

答案 1 :(得分:0)

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