如何在ant jar任务中包含可选的清单?

时间:2014-03-25 17:08:45

标签: ant jar manifest

<jar destfile="somefile" manifest="META-INF/MANIFEST.MF">

此脚本适用于多个项目。有些项目有清单文件,有些项目没有。在没有清单文件的项目上构建失败。

是否有办法配置此jar任务,以便ant使用项目清单文件(如果存在)并为没有自己的清单的jarred项目生成清单文件?

1 个答案:

答案 0 :(得分:0)

这是我创建的一个示例。这有两个jar任务:jar和jar1。一个使用if检查,另一个使用除非检查。蚂蚁目标&#39;全部&#39;调用两者,但只应运行1。它检查清单文件是否存在,如果是,则使用该文件,否则您可以在jar1任务中创建本地。

如果您只想拥有1个jar目标,那么您可能需要使用Ant-Contrib任务并使用该标记。 Here is a good link也可以对此进行审核。

<project name="StackOverflow" basedir="." default="all">

    <property name="src.dir" value="${basedir}/src"/>
    <property name="build.dir" value="${basedir}/build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>

    <target name="all" depends="compile,jar,jar1"/>

    <target name="check-manifest">
        <available file="META-INF/MANIFEST.MF" property="manifest.present"/>
    </target>

    <target name="jar" depends="check-manifest" if="manifest.present">
        <echo>Using existing manifest.mf</echo>
        <jar destfile="hello.jar" manifest="META-INF/MANIFEST"/>
    </target>

    <target name="jar1" depends="check-manifest" unless="manifest.present">
        <echo>creating local manifest</echo>
        <jar destfile="hello.jar">
            <manifest>
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Permissions" value="all-permissions"/>
                <attribute name="Codebase" value="*"/>
            </manifest>
            <fileset dir="${classes.dir}">
                <include name="**/*.*"/>
            </fileset>
        </jar>
    </target>

</project>