2017-02-10 12 views
1

私はいくつかの依存関係を持つプロジェクトのantビルドファイルを作成しています。私は、すべてのプロジェクトに共通のターゲットを含む別々のファイルを作成し、プロジェクト固有のものをそれぞれのビルドファイルに書き込む必要があります。たとえば、私は "cleanDependencies"と呼ばれるターゲットを持っています。forループで使用できる、antの変数のリストを定義します。

<target name="cleanDependencies"> 
    <echo>Cleaning dependencies... </echo> 
    <for list="dep1,dep2" param="dependency"> 
      <sequential> 
       <ant dir="dep/@{dependency}" target="clean" inheritAll="false" /> 
      </sequential> 
    </for>  
</target> 

これは私のすべてのプロジェクトの共通のターゲットであり、ターゲットの共通ファイルに分けたいと思います。

<target name="cleanDependencies"> 
    <echo>Cleaning dependencies... </echo> 
    <for list="${listOfDependencies}" param="dependency"> 
      <sequential> 
       <ant dir="dep/@{dependency}" target="clean" inheritAll="false" /> 
      </sequential> 
    </for>  
</target> 

の線に沿って何かそこで、私は「listOfDependencies」と呼ばれる私のプロジェクトのビルドファイルにリストを定義することができますし、私はこれらの線に沿って、異なるファイルから共通の目標「cleanDependencies」を含めることができます。

<list name="listOfDependencies"> <!-- Not a valid tag in Ant --> 
    <item>dep1</item> 
    <item>dep2</item> 
</list> 

私の質問は以下のとおりです。

1)アリの変数のリストを定義する方法はありますか?この質問は別の質問(Define a list or a set of variables in ant)と同じですが、答えはforループの外のリストを定義する方法を提供しません。

2)これを達成する別の方法がありますか?つまり、共通のターゲットを別々のファイルに収集し、適切な変数を使用してプロジェクト固有のビルドファイルに組み込む方法です。

+0

"for"タスクは標準的なantの一部ではないため、いくつかの問題が説明されている可能性があります。依存関係管理のために、Apache ivyを見ることをお勧めします。 –

答えて

1

要素またはタスクは、Antにはありません。list依存関係をカンマで区切って含むプロパティを使用できます。共通のターゲットは既にlistOfDependenciesのプロパティに依存しているので、呼び出すターゲットから渡すだけです。以下のように簡単でなければなりません:

<!-- calling buildfile --> 
<property name="listOfDependencies" value="dep1,dep2" /> 
<ant antfile="common/build.xml" target="cleanDependencies" /> 

デフォルトでサブプロジェクトは、親プロジェクト(これはinheritAll属性を使用して制御することができる)からのすべてのプロパティを継承します。

代替案として、共通ビルドファイルを組み込み、そのターゲットがメインビルドファイルに定義されているかのように呼び出すことができるimportタスクを見てみましょう。

関連する問題