3

質問はおそらくあまり明確ではないので、例を挙げて説明しましょう。いくつかのフォルダーをコピーしたいとします。

<copy todir="..." overwrite="true">
    <fileset dir="dir1" />
    <fileset dir="dir2" />
    <fileset dir="dir3" />
    ...
</copy>

ただし、これらのフォルダーをスクリプトにハードコーディングする代わりに、次のようなテキスト ファイルからフォルダーを読み込む必要があります。

Directories to copy:
  dir1
  dir2
  dir3
  ...

したがって、どういうわけか、テキストファイルをロードして解析し、コピーする必要があるディレクトリとそこから構成要素を見つける必要があります(<copy><fileset>は単なる例です)。

build.xml ファイルで何らかの変換 (XSLT など) を実行せずに、 Ant 内からそれを達成することは可能ですか?

4

2 に答える 2

2

入力テキストファイルの形式を変更できないため、あなたが望むことを行う最善の方法は次のとおりです。

1.元のファイルから XML を生成する [shell|Perl|etc] スクリプトを作成します。これは、XML のスニペットまたは完全な Ant ファイルのいずれかです。

2. Ant を呼び出す前にそのスクリプトを実行します。

3. 生成された XML を Ant ファイルにインポートします ( http://ant.apache.org/faq.html#xml-entity-includeにある関連する Ant ドキュメントを参照してください)。

于 2012-04-18T16:59:50.513 に答える
0

あなたがantでやりたいことを達成するために私が考えることができる最良の方法は、ant contrib foreachタスクを使用してファイルを読み取り、各行で動作することです。アリのターゲットは次のようになります。

<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<path id="dirlists">
    <fileset dir="${basedir}/dirlists">
        <include name="**/*.txt" />
    </fileset>
</path>

<target name="runCopy">
    <foreach target="_copyDir" param="dirPath">
        <path refid="dirlists"/>
    </foreach>
</target>   

<target name="_copyDir">
    <copy todir="..." overwrite="true">
        <fileset dir="${dirPath}"/>
    </copy>
</target>

これにより、dirlists という名前のフォルダー内のすべての .txt ファイルが読み取られ、各ファイルのすべての行について、その行で指定されたディレクトリからターゲット ディレクトリへのコピーが実行されます ...

于 2012-04-18T15:50:46.500 に答える