build.xml には、テストとビルドターゲットがあります。テストターゲットは明らかにビルドターゲットに依存します。
build.xml ファイルを変更せずに、一時的にコンパイルをスキップして、テスト ターゲットのみを実行するにはどうすればよいですか?
コンパイルが長すぎて、継続的インテグレーション サーバーによって最新の状態に保たれているため、質問しています。単体テストの問題を追跡しています。
属性を使用しunless
ます。
<target name="test" unless="dont.run.tests">
「テスト」を実行したくない場合は、
ant -Ddont.run.tests=true
テストを実行したい場合は、未定義にする必要があります。Ant は、定義されているかどうかをチェックするだけです。また、if
逆の属性もあります。
両方の記事はこちら。
いいえ、ビルド ファイルを変更せずにスキップすることはできません。
この問題を解決するために私のプロジェクトで行っていることは次のとおりです。すべてのパブリック ターゲットに対して、プライベート ターゲットを作成し、その前に「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>
個人的には、Ant の依存関係が役に立たないというより邪魔になっていることがわかりました。私は通常、2 セットのターゲットを設定します。1 つは実際に実行するもの(依存関係なし) で、次に、依存関係があるだけのターゲットです。そうすれば、単一のターゲットを簡単に実行でき、スイート全体などを簡単に実行することもできます。これは、私の考えでは (イデオロギーではなく)実用的な用途に適合します。
適切に作成されたビルド ターゲットは、コードが変更されていなければ、何も再構築する必要はありません。したがって、テストターゲットがそれに依存しているという事実は、ほとんど無関係です。ビルド ターゲットを 2 回続けて実行し、2 回目に何かを再構築しようとする場合は、その理由を調査することをお勧めします。
ターゲットの実行を回避する簡単な方法は、ターゲットの「unless」属性をプロパティの名前に設定することです。Ant の実行時にコマンド ラインでこのプロパティを設定すると、そのターゲットはバイパスされます。
依存関係を一時的に「削除」するだけですか?`コードが既にビルドされている場合は、すべてのファイルが利用できるはずですよね? - おっと、ファイルを変更できないことがわかりました。うーん、最初に同じジョブをローカルで実行してみませんか?