2016-04-22 17 views
1

プロジェクトではAntを使用してファイルを配布しています。ファイルの階層構造があり、以前のレベルのファイルを上書きします。このように:default - level1 - level2。現在は道を作っている。Antはファイルセットの順序を保証していますか?

<copy todir="..."> 
<fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
<fileset dir="${root}/level1" includes="**/*" /> 
<fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
</copy> 

だから我々は、すべてのフォルダに同じ名前のファイルが含まれている、それはLEVEL2ディレクトリから取得されることを期待しました。

まもなく別のバージョンのJavaで新しいビルドボックスに移動し、ファイルセットの順序が壊れていることがわかりました。

ant設定ファイルを変更せずにこの問題を解決する方法はありますか?私たちはそれをたくさん持っています。方法がない場合、どうすれば安くすることができますか?ありがとうございました。

+0

解決方法は[ant copy copying order](http://stackoverflow.com/questions/32716398/ant-copy-copying-order)を参照してください。 –

答えて

1

ファイルセットの順序が不明ですが、コピータスクの順序はわかりません。 ので、this answerの提案以下、上書き=「true」にして、いくつかのコピータスクを書くことは良い考えかもしれません:

<copy todir="..."> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level1" includes="**/*" overwrite="true" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2" overwrite="true" /> 
</copy> 
1

あなたはfilesetの周りsortリソースコレクションをラップし、使用順序を確保することができますこの方法でコピーします。ソート自体は、子要素として単一のリソースコレクションのみを好むので、filesetunionまたはresourcesコンテナに囲む必要があります。

は、名前でファイルをソートする

<sort> 
    <resources> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
    <fileset dir="${root}/level1" includes="**/*" /> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
    </resources> 
    <name/> 
</sort> 

ようhttp://ant.apache.org/manual/Types/resources.html#sort

何かを参照してください。

+0

"sortは、厳密に1つのネストされたリソースコレクションを必要とします。 - 私は2つのファイルセットを – awfun

+0

に渡すことはできませんが、 'fileset'の 'union ' - または重複した名前を' fileset'の 'resources'に気にしています。 –

関連する問題