<jar destfile="somefile" manifest="META-INF/MANIFEST.MF">
此脚本适用于多个项目。有些项目有清单文件,有些项目没有。在没有清单文件的项目上构建失败。
是否有办法配置此jar任务,以便ant使用项目清单文件(如果存在)并为没有自己的清单的jarred项目生成清单文件?
答案 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>