15

build.xml には、テストビルドターゲットがあります。テストターゲットは明らかにビルドターゲットに依存します。

build.xml ファイルを変更せずに、一時的にコンパイルをスキップして、テスト ターゲットのみを実行するにはどうすればよいですか?

コンパイルが長すぎて、継続的インテグレーション サーバーによって最新の状態に保たれているため、質問しています。単体テストの問題を追跡しています。

4

5 に答える 5

32

属性を使用しunlessます。

<target name="test" unless="dont.run.tests">

「テスト」を実行したくない場合は、

ant -Ddont.run.tests=true

テストを実行したい場合は、未定義にする必要があります。Ant は、定義されているかどうかをチェックするだけです。また、if逆の属性もあります。

両方の記事はこちら。

于 2008-12-17T14:30:16.013 に答える
21

いいえ、ビルド ファイルを変更せずにスキップすることはできません。

この問題を解決するために私のプロジェクトで行っていることは次のとおりです。すべてのパブリック ターゲットに対して、プライベート ターゲットを作成し、その前に「do-」を付けます。プライベート ターゲットには依存関係がなく、パブリック ターゲットには依存関係として "do-" ターゲットがあります。

例えば:

<target name="compile" depends="init, do-compile" description="Compiles all of the source code" />

<target name="do-compile">
        <javac destdir="${classes.dir}" debug="true" encoding="ISO-8859-1">
            <src refid="src.path" />
            <include name="*.java" />
            <classpath refid="external.libraries.classpath" />
        </javac>
</target>
于 2008-12-17T14:30:29.663 に答える
4

個人的には、Ant の依存関係が役に立たないというより邪魔になっていることがわかりました。私は通常、2 セットのターゲットを設定します。1 つは実際に実行するもの(依存関係なし) で、次に、依存関係があるだけのターゲットです。そうすれば、単一のターゲットを簡単に実行でき、スイート全体などを簡単に実行することもできます。これは、私の考えでは (イデオロギーではなく)実用的な用途に適合します。

于 2008-12-17T14:26:10.890 に答える
2

適切に作成されたビルド ターゲットは、コードが変更されていなければ、何も再構築する必要はありません。したがって、テストターゲットがそれに依存しているという事実は、ほとんど無関係です。ビルド ターゲットを 2 回続けて実行し、2 回目に何かを再構築しようとする場合は、その理由を調査することをお勧めします。

ターゲットの実行を回避する簡単な方法は、ターゲットの「unless」属性をプロパティの名前に設定することです。Ant の実行時にコマンド ラインでこのプロパティを設定すると、そのターゲットはバイパスされます。

于 2008-12-17T14:28:31.930 に答える
0

依存関係を一時的に「削除」するだけですか?`コードが既にビルドされている場合は、すべてのファイルが利用できるはずですよね? - おっと、ファイルを変更できないことがわかりました。うーん、最初に同じジョブをローカルで実行してみませんか?

于 2008-12-17T14:27:45.583 に答える