1

実行する必要があるターゲットはほとんどありません。それらすべてに名前を付けてターゲットを作成しますが、それは方法ではないと思いますか? 他のすべてのターゲットを呼び出すターゲット実行は次のとおりです。

<target name="test.all" depends="build
echolaunching agent /echo
antcall target="RunJtfTests" /
antcall target="launchOpenAgent" /
antcall target="run.test" //target
target name="run.test" depends="build, launchOpenAgent, runJtfTests"
echo Launching test/echo
echo message="${toString:iControlSilk4J.classpath}" /
  <java classname="com.miranda.icontrol.silk4j.installation.AdministrationCtrl"
classpath><fileset dir="${lib.dir}"
include name="**/*.jar" />
/fileset
pathelement path="${iControlSilk4J.classpath}" /
pathelement location="${jarPath}/Admin.jar" /
/classpath
  </java>
</target>

実行されず、レポートを取得するために実行しましたが、何も得られませんか? なにが問題ですか ?私が読んだところによると、antcall は goto ループのようなもので、良くありません。代わりにテストを呼び出したい。

->実行したいすべてのテストは次のとおりです。

  • 初期化
  • 掃除
  • 管理Ctrl.Rollback
  • 管理Ctrl.LatestInstallation
  • AdministrationCtrl.BackupiControl,
  • 管理Ctrl.ChangeService
  • 管理Ctrl.DefaultSetting
  • 管理Ctrl.InitFailOver
  • 管理Ctrl.RunDensite2Service
  • 管理Ctrl.RunDensiteService
  • 管理Ctrl.RunGSMService
  • 管理Ctrl.RunLoudnessAnalyzerService
  • 管理Ctrl.RunLoudnessLoggerService
  • 管理Ctrl.RunRouterManagerService
  • 管理Ctrl.RunttyR0Service
  • 管理Ctrl.RunVirtualService
  • 管理Ctrl.RestoreBkp

ただし、これはより一般的なものになる可能性があります (Silk4J に追加するテストに関して)。より一般的になる方法はありますか?

4

1 に答える 1

8

私の後に繰り返して:

Ant はプログラミング言語ではありません。依存マトリックス言語です。

これは重要な違いです。Ant に何を実行するかを指示しません。Ant に必要なものを伝えると、Ant は何をすべきかを理解します。

これらすべてでAntを理解するのに問題があると言えます<antcall/>。タスクを複数回実行する可能性があるため、これはノーノーです。ビルドファイルも意味がありません。

ターゲットのdependencyパラメーターを使用します。たとえば、スケルトンbuild.xmlファイルは次のとおりです。

<project>
    <target name="clean"/>

    <target name="prepare"/>

    <target name="compile"
        depends="prepare"/>

    <target name="package"
         depends="compile"/>

    <target name="test-compile
         depends="compile"/>

    <target name="test"
         depends="test-compile"/>

    <target name="deploy"
         depends="package"/>

    <target name="post-test-results"
         depends="test"/>

    <target name="all"
         depends="clean,post-test-results,deploy"/>
</project>

target を実行したいときはall、主にクリーン ビルドを実行し、テスト結果を投稿し、ビルドをデプロイすることを意味します。これは Makefile にも当てはまります。すべてのタスクをリストするわけではありません。コンパイルの準備作業を行う必要があるのはなぜですか? それは私の関心事ではありません。

を呼び出すと、、 、およびallが呼び出されます。これら 3 つのターゲットを呼び出す以外に、Ant が何をするかはわかりません。cleanpost-test-resultsdeploy

待ってください... テスト結果を投稿するにはどうすればよいですか? さて、テストを実行する必要があるかもしれません。testしたがって、私は私のpost-test-resultsターゲットに依存しています。ただし、テストを実行するには、コンパイルする必要がある場合があります。test-compileしたがって、私のtestターゲットには依存関係があります。

テストをコンパイルするために、通常の Java コードに依存しています。に依存test-compileしますcompile。コンパイルするには、準備する必要があります。おそらく、必要な構造を構築しているか、必要なjarをダウンロードしています。それは前に呼び出されcompileます。これでデプロイできます。ただし、展開する前に、展開をパッケージ化する必要があります。にdeploy依存しますpackage

パッケージ自体は に依存しますcompileが、私のcompile-test. 既に を呼び出しているのでcompilepackageターゲットはそれを行う必要はありません。コンパイル済みのクラス ファイルをパッケージ化するだけです。

したがって、おそらく次のターゲットをこの順序で実行します。

  • 掃除
  • 準備
  • コンパイル
  • テストコンパイル
  • 試験後の結果
  • パッケージ
  • 配備

allのターゲットは他のすべてのターゲットにヒットしますが、それらすべてを依存関係としてリストしたり、s 経由で強制的にビルドしたりする必要はありませんでした<antcall/>

Ant とその仕組みについて学ぶ必要があるようです。あなたのサンプル Ant ファイルは単に有効ではありません。Ant は XML スタイルの構造を使用します。すべてのタスクは XML スタイルのエンティティです。

幸いなことに、Ant に関する優れた本がたくさんあります。Manning's Ant in Actionを良い出発点としてお勧めします。

ここでわかることの 1 つは、1 つの<junit>タスクで junit テストのバッチを指定できることです。これは、タスクの 1 つ以上の<batchtest>サブエンティティを介して実行でき<junit>ます。は<batchtest>、特定の基準に一致するすべての分類を実行します。<test>タスクでサブエンティティを使用することもでき<junit>ます。サブエンティティを使用すると、<test>実行する個々のクラスファイルを指定できます。多くの場合、これらのクラスファイルは、指定された他の Junit 分類のセットを単に呼び出すだけです。このようにして、開発者は実行するテストとスキップするテストを指定できます。

何十ものテスト タスクを作成するのではなく、プロパティを使用して、実行するテストと実行しないテストを制御できます。これにより、複数の JUnit プロセスを生成することなく、一連のテストを指定できます。

于 2013-10-29T21:56:55.217 に答える