build.xml
私はその中に3つのターゲットを持つこのantファイルを持っています:
target1
、target2
およびtarget3
。
ユーザーが単純に実行ant
し、明示的なant target1
ものなどではない場合は、どのターゲットに電話をかけたいかをユーザーに尋ねます。
実行中にターゲットを明示的に呼び出さない場合にのみ、ユーザーにこれを求めるプロンプトが表示されることを忘れないでくださいant
build.xml
私はその中に3つのターゲットを持つこのantファイルを持っています:
target1
、target2
およびtarget3
。
ユーザーが単純に実行ant
し、明示的なant target1
ものなどではない場合は、どのターゲットに電話をかけたいかをユーザーに尋ねます。
実行中にターゲットを明示的に呼び出さない場合にのみ、ユーザーにこれを求めるプロンプトが表示されることを忘れないでくださいant
Antはプログラミング言語ではなく、依存関係マトリックス言語です。2つの間に大きな違いがあります。
プログラム言語では、シーケンスの絶対順序を指定できます。さらに、物事を行う上ではるかに柔軟性があります。Antでは、実行順序を指定しません。このステップを構築するためのさまざまな短い方法を指定してから、それらの依存関係を指定します。Antは、必要な実行順序を自動的に把握します。
これは、開発者がAntについて学ぶのが最も難しいことの1つです。開発者が実行順序を強制しようとして、同じターゲットのセットを何十回も何度も実行してしまうことを何度も目にしました。最近、ビルドに10分近くかかった彼女のビルドがあり、build.xml
2分以内に同じビルドを作成するように書き直しました。
を使用<input/>
してユーザー入力を取得してから、<exec>
またはを使用<java>
して別のAntプロセスを実行し、要求されたターゲットを実行できます。ただし、これはAntが機能すると想定されている方法を壊します。
デフォルトのターゲットは、開発者がプログラミング中に定期的に実行したいデフォルトのターゲットである必要があります。ビルドをクリーンアップするべきではありません。10分間のテストは実行しないでください。変更されたファイルをコンパイルし、warまたはjarを再構築する必要があります。それが私が99%の確率で望んでいることです。全体のプロセスは10秒かかります。
誰かがこれを理解していないとき、私は本当に、本当に腹を立てます。入力するのが嫌いでant
、ビルドの実行方法についての指示があります。デフォルトのターゲットが以前のコンパイルをクリーンアップすると、私は本当にイライラします。そして、何かを求められたら、いまいましいビルドファイルを書いた人を大きな鈍いオブジェクトで殴りたいという致命的な欲求に満ちています。これは、Antを実行し、ビルドが行われている間に何か他のことを行い、ビルドが完了したと思ったらそのコマンドウィンドウに戻るためです。ビルドに戻って、ビルドがそこに座っていることを確認して、どのターゲットを指定するかを教えてくれるのを待っていることに腹を立てることはありません。
あなたが本当に、本当にこれをする必要があるなら。と呼ばれるシェルスクリプトを使用しますbuild.sh
。build.xml
開発に影響を与えるので、これを行うのに煩わされないでください。
あなたが本当にする必要があるのは、Antの使い方をみんなに教えることです。
ant -p
。これにより、すべてのターゲットとその説明が一覧表示されます。ターゲットに説明がない場合、ターゲットはリストされません。これは、ユーザーが自分で実行してはならない内部ターゲットに最適です。(たとえば、別のターゲットを実行する必要があるかどうかを確認するために、ある種のテストを実行するだけのターゲット)。これを機能させるには、ターゲットに説明があることを確認してください。Antファイルを書いた人が、私が望まないマイナーなターゲットの説明を書いたが、私が望むターゲットの説明(コンパイルなど)を忘れると、私は腹を立てます。デビッドを怒らせないでください。あなたはデビッドを怒らせたくありません。BUILD
vs. build-programs
vs.を使用する1つのプロジェクトではなく、プロジェクト全体でどのターゲットが何をするかがわかります。Mavenライフサイクル名の名前を標準化しました。それらは文書化されており、議論や議論はありません。Compile
build-my-stuff
StuffBuild
<ant/>
ビルド順序を使用または<antcall>
強制しないでください。build.xml
を12の別々のbuild.xml
プログラムに分割しないでください。これらはすべて、ターゲット依存関係マトリックスを構築するAntの機能を壊す可能性があります。さらに、ビルドで依存関係の階層を表示し、複数のビルドファイル間で機能できない多くのAntツール。clean
は、この1つのディレクトリを削除するだけです。時々、これはbuild
、時々と呼ばれdist
ます。target
Mavenの命名規則を採用しているので、私は通常これを呼び出します。この答えが必ずしもあなたが探しているものであるとは限らないことについて申し訳ありません。Antで何をしているのか実際には述べていません。ビルドを実行している場合は、実行しようとしていることを実行しないでください。ある種のプログラムを作成している場合は、Antではなく実際のプログラミング言語を使用してください。
Antビルドは通常1〜2分以内に完了し、ファイルを変更したためにビルドをやり直すのに30秒以上かかることはありません。開発者にAntを使用してビルドし、Jenkinsサーバーが使用するのと同じターゲットを使用するように勧めたいので、これを理解することが重要です。そうすれば、私のJenkinsサーバーが公式ビルドを実行するのと同じ方法でビルドをテストできます。
input
antが提供するタスクを使用して、それをデフォルトのターゲットにすることができます。
<input
message="Please enter Target ID (1,2 or 3):"
validargs="1,2,3"
addproperty="targetID"
/>
このプロパティの値を使用して、実行するターゲットを決定します。
アリのドキュメントから:
message:ビルドの実行中にユーザーに表示されるメッセージ。
validargs:有効な入力引数を含むカンマ区切りの文字列。設定されている場合、入力タスクはここで定義されていない入力を拒否します。必要に応じて、任意の引数を渡すことができます。
addproperty:input.Behaviourから作成されるプロパティの名前は、プロパティタスクと同じです。つまり、既存のプロパティをオーバーライドすることはできません。