开发者

How to conditionally include manifest options when making a JAR in ANT

开发者 https://www.devze.com 2023-02-05 14:08 出处:网络
I am using ANT to manage multiple projects.I have a build-common.xml script that individual projects include.Some projects are libraries, others are programs.For the programs, I would like to include

I am using ANT to manage multiple projects. I have a build-common.xml script that individual projects include. Some projects are libraries, others are programs. For the programs, I would like to include

<manifest>
    <attribute name="Main-Class" value="${main.class}"/>
</manifest>

in the <jar> tag. For libraries, I would like to have an empty jar tag as follows.

<target name="jar" depends="compile" description="generate a jar">
    <mkdir dir="${build}/jar" />
    <property name="jarfile" value="${jar}/${ant.project.name}.jar" />
    <jar jarfile="${jarfil开发者_如何学JAVAe}" basedir="${classes}">
    </jar>
</target>

Is there a way I can include the manifest attribute Main-Class only if the property main.class is defined?

Thanks!


Use conditional targets:

<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>

This will run jar-main (and add the manifest) only when main.class is present. When it is not present jar-nomain will run.

0

精彩评论

暂无评论...
验证码 换一张
取 消