【问题标题】:Created multiple JAR files in ant在 ant 中创建了多个 JAR 文件
【发布时间】:2015-07-29 14:42:24
【问题描述】:

我正在尝试在一项 ant 任务中创建 4 个单独的 jar 文件,但我不确定如何执行此操作。这是我必须在清单中添加的东西吗?我希望能够有一个 jar 任务,但能够分别运行我的 java 程序 prob1 prob2 prob3 和 prob4 。那可能吗?任何帮助将不胜感激。

这是我现在的 jar 任务:

<target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/prob1.jar" basedir="build/classes" includes="build/classes/*">
        <manifest>
                <attribute name="Main-Class" value="prob1"/>
            </manifest>
        </jar>
    </target>

【问题讨论】:

    标签: java ant jar


    【解决方案1】:

    如果您不喜欢复制粘贴,可以为您的jar 任务创建一个宏:

    <macrodef name="create.jar">
        <attribute name="name"/>
        <sequential>
            <jar destfile="build/jar/@{name}.jar" basedir="build/classes"
                 includes="build/classes/*">
                <manifest>
                    <attribute name="Main-Class" value="@{name}"/>
                </manifest>
            </jar>
        </sequential>
    </macrodef>
    

    并像这样使用它:

    <target name="jar">
        <mkdir dir="build/jar"/>
        <create.jar name="prob1"/>
        <create.jar name="prob2"/>
        <create.jar name="prob3"/>
        <create.jar name="prob4"/>
    </target>
    

    另一种方法是使用Ant-Contrib 库,它为您提供for loop

    <target name="jar">
        <mkdir dir="build/jar"/>
        <for list="1,2,3,4" param="num">
            <sequential>
                <jar destfile="build/jar/prob@{num}.jar" basedir="build/classes"
                     includes="build/classes/*">
                    <manifest>
                        <attribute name="Main-Class" value="prob@{num}"/>
                    </manifest>
                </jar>
            </sequential>
        </for>
    </target>
    

    【讨论】:

    • macrodef 是要走的路——ant-contrib 永远不是路。试图让 ant 成为一种脚本语言会让人流泪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多