0

現在、シェルスクリプトを使用して次のことを行っています。

cd myproject1/
ant
cd ..
if grep 'sucessful' myproject/buil.log then move myproject ../backup/today/

myproject2、myproject3についても同様です。

エラーが発生した場合、プロジェクトは現在のディレクトリにとどまり、再処理されますが、プロセス全体が続行されます。

このプロセスをantビルドスクリプトに移行したいのですが、これを行う方法がわかりません。

私はアリとサブアントのタスクを見てきました。Antの方が仕事に適しているように見えますが、antを使用してディレクトリリストをループし、タスクを一緒に移動して、antタスクが完了したかどうかを確認する方法が見つかりません。

ありがとうございました。

4

2 に答える 2

2

この答えをチェックしてください:

異なるディレクトリの異なるantスクリプトで特定のターゲットを実行する

ログ解析ロジックを複製するのではなく、サブモジュールビルドでエラーをスローすることをお勧めします。

アップデート

これがデプロイメントをサポートするように設計されている場合、おそらくGroovyスクリプトを検討する必要がありますか?例外条件をより適切にサポートします:

def ant = new AntBuilder()

scanner = ant.fileScanner {
    fileset(dir:".", includes:"test*/build.xml")
}

scanner.each { f ->
    try {
        ant.ant(antfile:f)
    }
    catch (e) {
        ant.mkdir(dir:"backup")
        ant.move(todir:"backup", file:f.parent) 
    }
}

Groovyは優れたANT統合を備えており、ANTビルドに組み込むこともできます。

<target name="run">
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>

    <fileset id="buildFiles" dir="." includes="test*/build.xml"/>

    <groovy>
        project.references.buildFiles.each { 
            def f = new File(it.toString())
            try {
                ant.ant(antfile:f)
            }
            catch(e) {
                ant.mkdir(dir:"backup")
                ant.move(todir:"backup", file:f.parent) 
            }
        }
    </groovy>
</target>
于 2012-05-08T23:01:41.600 に答える
0

これらの線に沿った何かがあなたが探しているものかもしれません:

<target name="compile" >

    <javac srcdir="${src.dir}" destdir="${class.dir}" />

</target >

<target name="copy" depends="compile" >

    <mkdir dir="${dest.dir}" />

    <copy todir="${dest.dir}" overwrite="true">

        <fileset dir="${class.dir}" includes="**" />

        <fileset dir="${src.dir}" includes="**" />

        ...

   </copy>

</target>
于 2012-05-08T23:09:13.797 に答える