2011-01-20 13 views
2

ANTを使用して複数のプロジェクトを管理しています。私は個々のプロジェクトに含まれるbuild-common.xmlスクリプトを持っています。一部のプロジェクトは図書館であり、他はプログラムです。プログラムについては、ANTでJARを作成するときに条件付きでマニフェストオプションを含める方法

<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を含める方法はありますか?

ありがとうございます!

答えて

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が実行されます。

+0

素晴らしい!これは多くの意味があります。私はいくつかのコンポーネントを知っていましたが、すべてのコンポーネントを一緒に配置する方法はわかりませんでした。 – schmmd

+0

答えを受け入れることを自由に感じてください:-) –

+0

申し訳ありません。私はstackoverflowに多くの質問を投稿しません。私はあなたを投票しようとしたが、私は十分な評判がない(私はstackoverflowがopenidをサポートする前に私の古いアカウントを失ったと思う)... – schmmd

関連する問題