如何在ANT中制作JAR时有条件地包含清单选项

时间:2011-01-20 17:03:33

标签: class ant jar manifest main

我正在使用ANT来管理多个项目。我有一个build-common.xml脚本,单个项目包含。有些项目是图书馆,有些是项目。对于这些节目,我想包括

<manifest>
    <attribute name="Main-Class" value="${main.class}"/>
</manifest>
<jar>标记中的

。对于库,我想有一个空的jar标签,如下所示。

<target name="jar" depends="compile" description="generate a jar">
    <mkdir dir="${build}/jar" />
    <property name="jarfile" value="${jar}/${ant.project.name}.jar" />
    <jar jarfile="${jarfile}" basedir="${classes}">
    </jar>
</target>

只有在定义了属性main.class时才能包含清单属性Main-Class吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

使用条件目标

<target name="jar-mkdir" depends="compile" description="generate a jar">
  <mkdir dir="${build}/jar" />
  <property name="jarfile" value="${jar}/${ant.project.name}.jar" />
</target>

<target name="jar-main" depends="compile" description="generate a jar" if="main.class">
  <jar jarfile="${jarfile}" basedir="${classes}">
    <manifest>
      <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
  </jar>
</target>

<target name="jar-nomain" depends="compile" description="generate a jar" unless="main.class">
  <jar jarfile="${jarfile}" basedir="${classes}">
  </jar>
</target>


<target name="jar" depends="compile, jar-mkdir, jar-main, jar-nomain" description="generate a jar">
</target>

仅当main.class存在时,才会运行jar-main(并添加清单)。如果不存在,jar-nomain将会运行。