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.
精彩评论