9

私は、Groovy ベースの Ant に代わるものに幻滅しました。AntBuilder は Eclipse 内からは機能しません。Eclipse 用の Groovy プラグインは期待外れで、Gradle はまだ準備が整っていません。

Ant のドキュメントには、「Ant タスクを Ant 外で使用する」というタイトルのセクションがあり、Java コードから Ant ライブラリを使用する方法を紹介しています。ここに別の例があります:

http://www.mail-archive.com/dev@ant.apache.org/msg16310.html

理論的には、build.xml を Build.java に置き換えるのは簡単に思えます。Ant のドキュメントは、私が発見しなければならないいくつかの文書化されていない依存関係を示唆しています (Java 内から Ant を使用するという観点からは文書化されていません)。

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

Ant ライブラリを使用して Java でビルド ファイルを作成しようとした人はいますか?

4

6 に答える 6

7

私たちのビルドシステムは、主にあなたが説明したものに基づいており、実際に非常にうまく機能します. 規約に基づくアプリケーション モジュール レイアウトの自動検出を使用してアプリケーションをアセンブルするカスタム Java プログラムから Ant タスク (特にファイル操作タスク) を使用します。

ビルド スクリプト自体をコンパイルしたり、実際に Java を呼び出してビルドを実行したりするために、接着剤の Ant XML が必要になる場合がありますが、それは些細なことです。

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

于 2009-06-10T07:55:57.037 に答える
2

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

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

1 つの障害は、XML アプローチが文書化されているのに対し、Java アプローチは文書化されていないことです。そのため、ダウンロードして Ant コードに慣れる必要があります。

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

ただし、明らかだからといって、誰かが以前にそれを行ったことがあるというわけではありません。

于 2009-06-10T19:35:29.730 に答える
2

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

Ant は現在、BeanShell、Groovy などを使用したインライン スクリプトをサポートしており、その必要性を大幅に減らすことができます。

編集:ディーンの複数のコメントに応えて、ビルドが厳密に長い手順で構成されている場合、実際にはantのビルドスクリプトは必要ありません。ただし、ビルド スクリプトの機能は、複数のエントリ ポイントを許可しながら、依存関係が 1 回だけ実行されることを保証することです。

XML フォーマットが気に入らないのはあなただけではありません。ANT の作成者も同意見です。ただし、ビルド プロセスのビューが IDE から唯一の起動ポイントとして起動できるものである場合、ビルドのニーズは非常に単純であると言えます。

EDIT2:質問に直接語っているため、スカフマンの回答に賛成しました。コメントでは、このアプローチは手続き型のビルドには適しているが、宣言型のビルドには適していないことに同意しているようです。また、チキンを回避するために Build.java でボールを転がすには、少なくとも少しの ANT xml が必要です。そして卵問題。それは問題の核心に到達するようです。

于 2009-06-09T21:50:27.637 に答える
2

あなたは良い考えを持っていました。Cliff Click にも同様のアイデアがありました: http://blogs.azulsystems.com/cliff/2008/01/i-hate-makefile.html

それをやり遂げる場合は、ビルドシステムが[重要な]ビルドシステム自体を必要としないように、できるだけシンプルに保つことをお勧めします。

于 2009-06-10T01:16:36.830 に答える
0

Java プログラム内で Ant タスクを使用するのはかなり簡単ですが、私があなただったら、おそらく Ant ビルド ファイルに固執するでしょう。グルーヴィーな開発を行っている場合、Eclipse が必要なことを実行しない場合は、他の場所 (IntelliJ、NetBeans など) を探す必要があるかもしれません。

于 2009-06-09T22:12:24.377 に答える
0

私はそれが可能だと思いますが、ビルドを単純に自動化するための完全なJavaプログラムを作成してから、シェルスクリプトを使用する方がよいでしょう。

ファイルセットを指定しやすく、プロパティを読みやすくするという ant の重要な用途の 1 つを見逃すことになります。

Groovy はアプリケーション全体を作成するのに近すぎて、実際のアプリケーションを構築するだけなので、私は ant にこだわっています。トラブルには複雑すぎます。

于 2009-06-09T21:26:29.680 に答える