11

大規模な Java プログラムを構築するための make ユーティリティを探しています。私はすでに ANT を知っていますが、他に何が利用できるか知りたいです。

理想的には、GNU Make を汚す .java->.class パッケージ ディレクトリの奇妙さを処理できる必要があります。

Win32 ですが、クロス プラットフォームはプラスです。

編集: ANTを使用することにはいくつかの短所があります。そのため、他のオプションを見たかったのですが、機能するという理由だけで、とにかく使用することになるでしょう。

  • "HelloWorld" はすでに 25 行あり、これ以上妥当なプログラムはすぐに大きくなります。
    • Ant のチュートリアルでは、すべての Java コマンドを実行するだけで長いだけの大きな .bat ファイルとほぼ同じ ant build.xml ファイルの比較を示しています。http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html、私はすでにそれらの 1 つを持っています。
    • Xml は、すべての依存関係、変数、ターゲット、ルール、およびプロジェクトに余計なものが含まれていることを意味し、行を読みにくくするだけです。山かっこ税
  • 私にとって間違った問題をすべて解決します。
    • ant を使用すると、jar および javac コマンド ラインの記述、マニフェストの生成、.java ソース ファイルの指定、jvm/java プロパティの指定、カスタム ビルド ツールの記述が容易になります。
    • ant は Java クラスの依存関係を容易にしません。また、より強力な変数システムを持っていないように見えます。これらは通常、make ユーティリティによって解決されます。

gnu make を使用しますが、パッケージ宣言を含む .java ファイルの .class ファイルがどこにあるのかわかりません。

4

13 に答える 13

6

Ant と Maven は間違いなく 2 つの標準です。すでに Ant に精通していて、Maven に付属する依存関係管理が必要な場合は、Ivyを参照してください。

Ant と Maven の両方に欠けているものの 1 つは、ビルド スクリプトの真の制御構造です。この制御の一部を提供する Ant 用にダウンロードできるプラグインがありますが (これも、既に Ant に精通している場合は)、Ant の Groovy ラッパーであるGantを参照してください。

于 2008-10-04T00:16:45.407 に答える
4

新しいプロジェクトを開始する場合は、mavenを調べてください。最初はちょっと大変ですが、依存関係を含めてたくさんのものを処理してくれます。

のビルド ファイルを作成したいプロジェクトが既にある場合は、前述のアリ以外に推奨事項はありません。

于 2008-10-03T23:27:36.910 に答える
4

ANTを忘れてください!

あなたが私に尋ねるなら、Apache Mavenが行く方法です。

私が最も気に入っている機能は、依存関係管理に組み込まれていることです。これは、サード パーティの JAR をソース管理プロジェクトにチェックインする必要がないことを意味します。

Maven POM (プロジェクト オブジェクト モデル - 基本的にはプロジェクトの XML 記述) で依存関係を指定すると、maven が自動的にダウンロードし、それらに対してコンパイルし、アプリと共にパッケージ化します。

その他の非常に優れた機能は次のとおりです。 リリース管理と配布の公開 - Maven コンソール コマンドを使用してリリースを実行します。この機能は、ソース管理でコード ベースにタグを付けます。クリーン コピーをチェックアウトし、ビルドして展開用にパッケージ化します。2 番目のコマンドは、他のエンド ユーザーに配布するためにリポジトリにアップロードします。

すでにmavenを使用しているライブラリの大規模で成長中のリポジトリ - すべてのApacheプロジェクトはmavenを使用しています。さらに LOADS も搭載されています。自分の目で確かめてください。ここにメインレポがあります

独自のレポをホストする機能。- 独自のビルドをリリースし、他のパブリック リポジトリに存在しない JAR をアップロードできる場所 (ほとんどの SUN jar など)

于 2008-10-03T23:48:01.440 に答える
2

これは、質問というほど答えではありません。ANT は Java を構築する標準的な方法です。これは、無数の Java ツールである Java や、Cruise Control とうまく連携します。では、なぜ他のことを試してみたいと思うのでしょうか?

ANT がカバーしない特殊なケースがない限り、ANT を使い続けることをお勧めします。

もちろん、より知識のある人が、なぜ私の態度がばかげているのか、なぜ代替案を検討するのに適した理由があるのか​​ を指摘してくれるとうれしいです;)

于 2008-10-03T23:27:49.920 に答える
2

かなり軽量なものが必要な場合、1 つの代替手段はsconsです。私はそれを少し使用しましたが、特に Python 構文を既に知っている場合は、非常に理解しやすいことがわかりました。別のオプションはmavenですが、決して単純ではありません。ただし、ドキュメントの管理を支援するなど、多くの追加機能を提供します。ただし、これを代替品とは呼びません;)

于 2008-10-03T23:28:46.470 に答える
1

jmk。原始的ですが、非常に小さいため、ソースの.tar.gzファイルに埋め込んで、サイズをほとんど変更できません。

于 2008-10-04T00:47:37.250 に答える
1

最近Mavenが本当に改善されていない限り、私はMavenを避けたいと思います。もちろん、無数の依存関係を持つある種のモンスター「マルチプロジェクト」がない限り。

最も単純なこと (サーバーへのファイルの FTP 送信など) を実行しようとしたときに、まったく役に立たず役に立たないエラーを見るのにうんざりした後war、Maven は捨てられ、Ant はほこりを払いました。それ以来、私は振り返っていません。

于 2008-10-04T09:41:04.503 に答える
0

私はいつもANTを使っています。これは、クライアント側のJavaをJavaスクリプトにコンパイルする追加の手順があるGoogle Web Toolkit(GWT)を使用してWebアプリケーションを開発しているためです。antの場合、私が知る必要があるのは、GWTがどのように機能するかを知り、それから自分でビルドを調整することだけです。Mavenでは、誰かがプラグインを作成するまで待たなければなりません。または私は自分で1つ書きます。通常の慣習に従わない他のフレームワークやツールが登場する可能性があります。私はいつもMavenプラグインを探し続ける必要はありません。antを使用すると、透過的にやりたいことが何でもできます。私はxmlファイルを書くことも楽しんでいます。(web.xml、application.xml、persistence.xml、SqlMap.xml、dataset.xmlなどをいくつか記述しなければならないのでそうしなければなりません。私のポイント_ XMLはあなたが好きになることを学ばなければならないことの1つです)

于 2009-10-24T05:56:31.027 に答える
0

ant4eclipse で ant を使用するのが好きです。これにより、Eclipse で依存関係をセットアップし、Eclipse で開発ビルドとテストを行い、ant を使用して継続的なビルドを行うことができます。

于 2008-10-13T21:02:16.470 に答える
0

1) ant への既存の投資がある場合、ant + ivy は非常に優れています。依存関係のためだけに ant から maven に移行する必要はありません。

2) ガントとアリ: 比較方法: http://java.dzone.com/articles/ant-or-gant-part-1

3) http://www.gradle.org/ -- groovy を使用しています!

BR、
~A

于 2008-10-04T02:19:48.013 に答える
0

私はAntからMaven 2に変換し、それ以来振り返っていません。Ant と Maven ビルドの 2 つの異なる方法。Ant を使用すると、ビルド方法を指示できます。一方、Maven 2 では、ビルドしたいものを指定します。既存の Ant build.xml がある場合は、それを Maven 2 pom.xml でラップすることにより、ビルドをリファクタリングする最初のステップを実行できます。

于 2008-10-04T00:11:56.400 に答える
0

もちろん、古典的な make (make、gmake、nmake) ユーティリティもあれば、Ruby か Python で書かれたビルド システムもあると思います。これらは Java 固有のものではなく、スクリプト可能なビルド システムにすぎません。

しかし、ANT は現在 8 ~ 9 年にわたって業界をリードしており、基本的には簡単に始めることができます。

昔は、java をコンパイルするのが特にひどいものでした。これは、通常、各ファイルに対して個別に javac コンパイラを呼び出していたためです。ANT はこれに悩まされることはありません。おそらく、そうならないように make を変更することもできます。しかし、それはANTの要素の1つであり、それが非常に人気がありました. それは単に速かった。

ANT が完璧なソリューションではないかもしれないことは理解していますが、実用的であることは確かです。

于 2008-10-03T23:33:35.120 に答える