1

これが例です-私が試したターゲット。結局、コンマが「 * * / *」と「カバー」を区切っているので、すべてを削除したいのです-理解できます。

<target name="clean">
    <delete
        verbose="true">
        <fileset dir="." includes="**/*.pyo"></fileset>
        <fileset dir="." includes="**/*,cover"></fileset>
    </delete>
</target>

埋め込みコンマを指定するにはどうすればよいですか?

私はAntを学ぼうとしているので、オペレーティングシステムごとに異なるビルドシステムを維持する必要はありません。この場合、Python環境にあり、*、coverファイルはCoverageと呼ばれるコードカバレッジチェックツールによって作成されます。

4

2 に答える 2

1

これを逃れる必要はありません。arg<include/>の代わりに使用してください。includesこれを試して:

<project name="test" default="clean">

    <dirname property="build.dir" file="${ant.file.test}" />

    <target name="clean">
        <delete>
            <fileset dir="${build.dir}/test">
                <include name="**/*,*.xml" />
            </fileset>
        </delete>
    </target>

</project>

ところで。引数.に(ドット)を使用しないでください。dirファイルを取得したディレクトリ内のファイルを削除する場合は、build.xml絶対パスを渡す必要があります(これを行う<dirname/>には、私の例のように使用できます)。を使用する場合は.、ネストされたビルドで問題が発生します。ファイルを削除する2つのビルドがあることを想像してみましょう。ただし、最初のビルドは2番目のビルドも呼び出します。

maindir / build1.xml

<delete dir="." includes="**/*.txt" />
<!-- call clean target from build2.xml -->
<ant file="./subdir/build2.xml" target="clean"/>

maindir / subdir / build2.xml

<delete dir="." includes="**/*.txt" />

この場合、build2.xmlはsubdirの* .txtファイルを削除しませんが、antプロパティがbuild2.xmlに渡されるため、maindirの*.txtファイルを削除します。もちろんinheritAll="false"、これを省略して使用することもできますが、私の経験から、.パスで使用すると多くの問題が発生することがわかっています。

于 2013-03-14T21:01:45.183 に答える
0

削除したくない cover で終わる名前のファイルが他にない限り、コンマを省略してください:

<fileset dir="." includes="**/*cover"></fileset>

削除したくないカバーで終わる他のファイルがある場合は、MattDMo のコメントからのバックスラッシュの提案を試してください。2 つのバックスラッシュ (" **/*\\,cover") が必要になる場合があります。

別の可能性: ディレクトリ全体を削除できるように、出力を別のディレクトリに配置するように Coverage を構成できますか? または、この問題が発生しないように、別の出力ファイル名を使用するように構成できますか? 私はカバレッジに精通していませんが、あなたが提供したリンクを見ると、data_file オプションがこれらのいずれかまたは両方を行う可能性があるようです。

于 2013-03-14T20:48:10.503 に答える