2

かなり単純な質問があります。通常、Ant の build.xml ファイルとしてこれを行います。

<project default="" name="Caterpillar Common settings">
    <property name="some.name" value="some.value" />
</project>

したがって、これを別の .xml プロジェクトにインポートすると、「some.name」が「some.value」に設定されます。

この「some.name」の設定は少し複雑で、いくつかの小さなターゲット内に記述されたロジックが必要になる場合があります。

質問: 最上位のタグと同じように、ターゲットを自動的に呼び出すにはどうすればよいですか?

私が試したところ<antcall>、明らかにトップレベルではありませんか?

4

2 に答える 2

2

Ant タスクは、他の Ant プロジェクトでターゲットを呼び出すために使用できます。

デフォルトでは、現在のプロジェクトのすべてのプロパティが新しいプロジェクトで使用できます。または、この属性を false に設定するinheritAllと、「ユーザー」プロパティ (つまり、コマンドラインで渡されたもの) のみが新しいプロジェクトに渡されます。いずれの場合も、新しいプロジェクトに渡される一連のプロパティは、新しいプロジェクトで設定されているプロパティをオーバーライドします。

ビルドを構成する 1 つの方法は、最初にサブプロジェクトを呼び出し、次にAntタスクを使用してマスター プロジェクトを呼び出すことです。

次の例では、project2.xmlによってプロパティが初期化され、マスター プロジェクト ファイルbuild.xmlによって使用されます。

project2.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="project2" default="initialize">
  <dirname property="project2.dir" file="${ant.file.project2}" />
  <property name="caterpillar.dir" location="${project2.dir}" />

  <target name="initialize">
    <property name="some.name" value="some.value" />
    <ant dir="${caterpillar.dir}" antfile="build.xml" target="build" />
  </target>
</project>

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="Caterpillar-Common-Settings">
  <target name="build">
    <echo message="${some.name}" />
  </target>
</project>

ビルドは、次のようにコマンド ラインから初期化されます。

$ ant -f project2.xml

出力

Buildfile: /home/caterpillar/project2.xml

initialize:

build:
     [echo] some.value

BUILD SUCCESSFUL
Total time: 0 seconds
于 2012-06-27T17:50:36.117 に答える
1

使用する

<Sequential>
    <echo message="something" />
</sequential>

これをカプセル化するマクロ定義は必要ありません。

于 2012-07-13T13:55:36.157 に答える