17

すべてのプロジェクトとそのバージョンは、次のようなプロパティ ファイルで定義されます。

ProjectNameA=0.0.1
ProjectNameB=1.4.2

すべてのプロジェクトを繰り返し処理し、それらの名前とバージョンを Ant スクリプトで使用したいと考えています。

現在、プロパティ タスクを使用してファイル全体を読み取り、次のように for ループで特定のリストを反復処理します。

<for list="ProjectNameA,ProjectNameB" param="project">
   <sequential>
    <echo message="@{project} has version ${@{project}}" />
   </sequential>
</for>

for ループでプロジェクト名をハードコーディングしないようにするにはどうすればよいですか? 基本的に、各行を繰り返し、プロジェクトの名前とバージョンを抽出します。

4

2 に答える 2

13

すでに antcontrib を使用しているので、このタスクforを利用するのはどうですか:propertyselector

<property file="properties.txt" prefix="projects."/>
<propertyselector property="projects" match="projects\.(.*)" select="\1"/>

<property file="properties.txt" />
<for list="${projects}" param="project">
    ...
</for>

ここでの考え方は、プレフィックスを使用してプロパティを 1 回読み取り、結果のプロパティ セットを使用して、タスクprojectsを含むプロジェクトのコンマ区切りリストを作成することです。次に、プロパティがプレフィックスなしpropertyselectorで再読み取りされるため、 for ループは以前と同じように続行できます。

于 2010-10-03T22:29:13.497 に答える
0

追加の .property ファイル (build.properties に加えて) を読み取る場合、覚えておきたいことはスコープです。(property file="foo.property" タグを使用して) 追加のファイルを読み取ると、ant はファイルが読み取られ、プロパティが読み込まれたことを示します。ただし、それらを参照すると、未定義になります。

于 2011-08-10T20:45:34.623 に答える