2009-06-09 11 views
9

私は、GroovyベースのAntの代わりに夢中になりました。 AntBuilderはEclipse内では動作しません。Eclipse用のGroovyプラグインは残念ですが、Gradleはまだ準備ができていません。build.xmlをBuild.javaに置き換える - JavaとAntライブラリをビルドシステムとして使用

Antのドキュメントには、JavaコードからAntライブラリを使用する方法についてのティーザーを提供する「Antの外にあるAntタスクを使用する」セクションがあります。別の例はここにあります:理論的には

http://www.mail-archive.com/[email protected]/msg16310.html

Build.javaとのbuild.xmlを交換するために十分に簡単そうです。 Antドキュメントは、私が発見しなければならないいくつかの文書化されていない依存関係を暗示しています(Java内からAntを使用する観点からは文書化されていません)。

Antスクリプトに関する失望のレベルを考えると、なぜこれが前に行われたのか不思議です。おそらくそれは良いビルドシステムを持っていて、そうではありません。

誰もがAntライブラリを使用してJavaでビルドファイルを書き込もうとしましたか?

+0

なぜGradleはまだ準備されていないのですか? – tronda

+0

+1私もこれをやろうと考えています。アリのストレートジャケットは疲れている。 – amarillion

+0

これについて心配している方は、ここにいくつかの情報を追加して広範な議論があります: http://ant.1045680.n5.nabble.com/Replacing-build-xml-with-Build-java-Doing-Ant-直接ビルドからJava-td1354956.html – ricosrealm

答えて

7

私たちのビルドシステムは、主にあなたが何を記述しているかに基づいており、実際にはうまく機能します。従来のJavaアプリケーションからAntタスク(特にファイル操作タスク)を使用して、コンベンショナルベースのアプリケーションモジュールレイアウトの自動検出を使用してアプリケーションをアセンブルします。

には、ビルドスクリプト自体をコンパイルするようなことや、実際にビルドを実行するためにJavaを呼び出すために、いくつかのグルーAnt XMLが必要ですが、それはマイナーです。

JavaはAntよりも読みやすいだけでなく、特に条件付き実行に関しては、はるかに高速です。私たちのAntベースのビルドでは、EARを組み立てるのに1分ほどかかっていましたが、現在Javaベースのバージョンは約5秒かかります。

+0

はい私は小さなAntスクリプトを使ってBuild.javaをビルドして実行するのが便利だろうとわかりました。私はbuild.xmlに異なる引数を "java Build arg1 arg2 ..."に渡すために、より大きなbuild.xmlにある異なるターゲットに対応する異なるターゲットを持つことができます 使用時に文書化されていない/ JavaからのAntです。つまり、Targetオブジェクトを持つプロジェクトを持つ必要がありますか? –

+0

はい、Antタスクでは一定量の配管が必要ですが、簡単にスプーフィングできます。私たちは、使用したいAntタスクのサブクラスを作成し、ビルド "スクリプト"を使用するためのより便利で流動的なAPIを提供し、プロジェクトのようなものを注入する仕組みを隠しました。私たちに何か問題を引き起こしたものはありません。 – skaffman

+1

いいですね。それをオープンソース化する計画があるのでしょうか、それとも少なくともビルドシステムの概要を提供していますか? –

0

私は可能だと思いますが、おそらくシェルスクリプトを使い、Javaプログラムを使って完全にビルドを自動化するほうがよいでしょう。

antの主な用途の1つで、簡単に指定できるファイルセットであり、プロパティを読みやすくなっています。

Groovyが実際のアプリケーションを構築するためにアプリケーション全体を書くには近すぎるため、私はantで立ち往生しています。トラブルにはあま​​りにも複雑です。

+0

時には、Ant build.xmlファイルが独自のサブプロジェクトになることがあります。ビルドはxmlにとって複雑すぎる、複雑すぎることがあります。 –

2

Javaがコンパイルされている場合、これは鶏と卵の問題のようなものです。プロジェクトをビルドするには、Build.javaをビルドする必要があります。

現在、AntはBeanShell、Groovyなどのインラインスクリプトをサポートしているため、その必要性を軽減するのに役立ちます。

EDIT:Deanの複数のコメントに応じて、あなたのビルドが厳密に長い手続きで構成されている場合、実際にはantのビルドスクリプトは必要ありません。しかし、ビルドスクリプトの能力は、複数のエントリポイントを許可しながら依存関係を一度だけ実行することを保証することです。

XML形式が気に入らなければ、あなただけではなく、ANTの作者があなたに同意します。しかし、ビルドプロセスのビューを唯一の起動ポイントとしてIDEから起動できるものがあれば、ビルドの必要性は非常に簡単だと言えます。

EDIT2:それは質問に直接話すので、私はスケフマンの答えを高くしました。コメントでは、手続き型ビルドではアプローチは問題ないが、宣言型のアプローチではうまくいかないことに賛成しているようで、Build.javaでボールをローリングさせるには少なくともANT xmlが必要です卵の問題。それは問題の要点になるようです。

+0

鶏と卵の問題はありません。ビルドして、Eclipse内または使用するIDEの中からBuild.javaを実行します。 Ant

2

良いアイデアがありました。クリフ・クリックにも同様の考えがありました。http://blogs.azulsystems.com/cliff/2008/01/i-hate-makefile.html

あなたができるだけシンプルにしておくことをお勧めします。そうすれば、ビルドシステムにはビルドシステム自体は必要ありません。

+0

与えられたプロジェクトのbuild.xmlファイルより多くのBuild.javaファイルがあるべきではありません。ほとんどの場合、トップレベルのBuild.javaがすべて存在します。私のコンセプトは、xmlファイルからではなく、JavaからのAntを使用することです。 –

+0

Cliffのブログへのリンクが壊れていますが、Cliffのgithubのbuild.javaが見つかりました: https://github.com/edwardw/high-scale-java-lib/blob/master/build.java –

2

重要なポイントはここで失われているようです。

AntはJavaで書かれており、私が探しているのは、Antタスク(AntライブラリのAPI)をxmlよりも使いやすい方法です。私の人生にとってJavaを呼び出すためにxmlを使用することは、Javaを呼び出すためにJavaを使用するよりもずっと簡単になりました。

xmlアプローチは文書化されていますが、Javaアプローチは文書化されていないため、Antコードをダウンロードして慣れる必要があります。

誰かがこれまでにやったことがあり、私のgoogle-fooが改善が必要だったと確信していたので、この質問を投稿してから戻ってきました。 xmlの代わりにAnt APIを呼び出すためにJavaを使用することは非常に明白なようですが、AntとXMLのアプローチで並列Javaベースのアプローチが開発されていないことにまだ驚いています。

それが明白であるという理由だけで、誰かがそれを前にやったことを意味するわけではありません。

+0

誰かが以前に行ったことがあります。それはAntと呼ばれています) – GreenGiant

関連する問題