2009-06-02 9 views
1

最近、私たちのantスクリプトでジャグリングした後、より良いことが可能かどうか疑問に思っています。適切な依存関係を扱うJavaビルダー

私に必要なすべての.javaファイルを再コンパイルすることを知っているビルダーが必要です。

例:このような構造のため

public class A { ] 
public class B extends A {} 
public class C { 
    B b; 
} 
  1. について:( 'C')をコンパイルするためにA、B、Cの
  2. をコンパイルするために知っている:Bコンパイル( 'C')は、単にBを再コンパイルするために知っているだろう、変更。私はいくつかの選択肢を知っている

、私たちの現在のJavaビルダーである蟻の延長のように思えるIvyScons私たちが現在C++コードを作成するために使用しているsconsは、上記のCコードの動作を行う上で優れています。そして、Mavenの報告がalmost but not quite thereである。

あなたは何をお勧めしますか?フリーソフトウェア/コマーシャルを使用してシステムを構築するツールはありますか?

ありがとう、 マキシム。あなたは、クラス間の依存関係を記述し、あなたの質問に

答えて

0

のmaven、両方の私の個人のために、私の商用製品

0

。ほとんどのビルドシステム、特にMavenは、プロジェクト間の依存関係をより重視しています。ほとんどのシステムはプロジェクト内のすべてのクラスを再コンパイルするだけで、これらのビルドシステムの利点のほとんどは可能な限り少数のプロジェクトを構築することにあります。

MavenとIvyの両方を使用すると、依存しているプロジェクトのバージョンなど、プロジェクトの外部依存関係と内部依存関係を簡単に指定できます。また、ローカルのマシンに外部ライブラリ(Apacheのコモンズなど)をローカルマシンに自動的にダウンロードし、ローカルにキャッシュされていない場合は、サードパーティのjarファイルを手動でダウンロードして整理する作業が多くなります。

アイビーはあなたが言及しているように、アリの拡張です。私はMavenをお勧めします。それは私が首尾よく使い慣れていて、非常に成熟しているというコンベンション指向のビルドシステムです。 Mavenは、使用を開始するためにはるかに少ない労力を要し、かなり拡張性があります。

+0

'を作る' 再

  • オン:Mavenの対ツタ:新しいプロジェクトを開始するために、私はMavenのが必要であることに同意少ない前払いの努力。既存のプロジェクト(このようなもの)では、Ivyは単純に「プラグイン」することができますが、Mavenは通常、期待に合わせるためにはもっと多くの初期作業が必要です。これは、大会に対する厳しい遵守の祝福と呪いです。 –

  • 1

    ivy、scons、またはmavenのいずれも、記載されている問題の解決に役立たないでしょう。

    1. 「for Compile( 'C')」とは何を意味しますか?私はこれがあなたのantファイルにあるとは思わない。
    2. この場合、Antは必要に応じて動作しているはずです。つまり、デフォルトの動作を説明しています。同じjavac要素では、Antは変更されたクラスのみを再コンパイルします。 javacタスクの場合はAnt manualエントリ、特に 'includeDestClasses'属性を参照してください。

    不十分と思われるサンプルのantファイルを投稿してください。

    関連する問題