質問

ものは何か別のビルドツールを対象とJava本当にわかってる?

ご利用の場合、Gradle他のツールは、いかがでしょうか?

役に立ちましたか?

解決

利用しない Gradle 怒りに自分でもちゃプロジェクトこれまで) [著手段が使用されてGradleだけ玩具のプロジェクトこれまでにないのではなく、Gradleはもちゃプロジェクト参照のコメント], がんという理由を一つに組み入れられていないのですが、不満のAnt、Maven.

私の経験アリでネット環境さえあれば-みりんの書き込みが可能となります 美しいモジュラーガの構築sが、実はほとんどの人に関するものらしいです。の他の非自明な事業となり心-曲げ加工は、細心の注意を払っと複合体を構築ていました。そのと自然での複製の構成とビルドがマクロができます。

Mavenの逆のアプローチが期待する完全に統合は、Mavenのライフサイクルになっています。経験したAntユーザはこの特jarringとしてMavenを取り除くのは、自由に持っているAnt.例えばあ Sonatypeブログ この列挙の多くは、Mavenの批判とその対応。

は、Mavenプラグインことができる構造のための非常に強力なビルド構成を継承モデルの意味を定義することができ、小さなセットの親POMs包ビルド構成のための企業や個別プロジェクトに引き継ぐ者構成すくなり軽量化を達成しています。Mavenのシステムでは、その詳細がMavenの3つの約束そこで、だいたいもの"なのMavenの道"が好きなのプラグインを使用しhacky Ant統合しました。注記があるとのことだったがなかった書Mavenプラグインがることができるので、多くのオブジェクトへの努力。

Gradleの約束をヒットトラストとAnt、Maven.使用す Ivy的のための依存関係解決をすることができコンベンションの設定も含まれAntタスクとして初のクラス。でも賢く利用できる既存のプロトコル/アイビーリポジトリ

その場所に打ったこだわったのAnt/Mavenの痛みのポイントなので試してみる価値は十分であり、Gradle出が私の意見では、今のところ未知数である場合はないのではない取引既知の問題のため不明です。の証明とプリンは、食べもののようなので準備の判断で商品をもう少し成熟しており、その他のくしゃにしたり報を提供するリソースが確保で出血縁の理由).だとするので私の玩具事業が合いを認識することがポイントです。

他のヒント

それはアリよりもはるかに優れスイスアーミーナイフです - -

のGradleは、多くの目的のために使用することができる。しかし、それが具体的にマルチプロジェクトに焦点を当てていますビルドします。

すべての

まず、Gradleのも、それは、プログラミングツールの意味依存プログラミングツールです。 Gradleではであなたのセットアップに任意のランダムなタスクを実行することができ、Gradleのは、宣言されたすべての依存性が適切かつ適時に実行されていることを確認します。あなたのコードは、レイアウトのいずれかの種類(ツリー、フラット、散乱、...)に多くのディレクトリ全体に広げることができます。

評価と実行:

のGradleは、2つの異なる相を持っています。基本的には、評価中のGradleはを探し、見えるようになっているディレクトリにスクリプトを構築し評価します。実行時にはGradleでは、アカウントのタスク間の依存関係を考慮して、評価中にロードされたタスクを実行します。

これらの依存プログラミングの上には、Gradleのは、Apacheアイビーとのときの積分することにより、プロジェクトおよびJARの依存関係の機能が追加されています。ご存知のようにアイビーは、Mavenを言うよりもはるかに強力で、はるかに少ない独断依存関係管理ツールです。

のGradleはプロジェクト間およびプロジェクトとJARファイル間の依存関係を検出します。 GradleのはiBiblio 1または独自のリポジトリのようなMavenのリポジトリ(ダウンロードおよびアップロード)で動作しますが、またサポートし、あなたが持つかもしれないリポジトリインフラストラクチャの他の種類ます。

マルチプロジェクトでは、Gradleのが適応の両方で、ビルドの構造やアーキテクチャに適応構築します。あなたはMavenのに必要とされるであろうと、あなたのビルドツールにあなたの構造やアーキテクチャを適応させる必要はありません。

のGradleは、あなたの方法でのMavenが行うことはほとんどない努力を取得しないように非常に難しいしようとします。条約は良いですが、まだとても柔軟です。 GradleのはあなたのMavenは、最も重要な、多くの場合、Gradleの離れMavenのからあなたの痛みのない移行パスを提供しますないよりも多くの多くの機能を提供します。

このビットが話題を呼んだもので、Gradleないという事実を隠すよう本格的なプログラミング言語.

Ant+ant-optionalであるチューリング完全にプログラミング言語のことをしたいプログラムです。

Mavenのように逆るというアプローチは完全に証を強制するのは大き、コンパイル、プラグインが必要な場合は論理です。でも課プロジェクトモデルは完全に柔軟性を欠く.Gradle合のこれらのツール:

  • で条約-上構成(ala Mavenな範囲のみで使いやすさに
  • これにより、書きの柔軟なカスタムのような仕事をするようになった、Ant
  • このマルチ-モジュール-プロジェクトを支援しているため、両Ant、Maven
  • このDSLの80%ものの20%も可能なビルドツールの80%、10%では、10%の有効な).

Gradleの設定可能な、柔軟なビルドツールっています。を呼び出す必要はあ投資のフロントのDSLと概念のような構成のものが必要な場合はない、完全に設定可能なJVM構築ツールです。

Gradleくも兼ね備えたAnt、Mavenのベストの両面からの枠組み柔軟性からAntコンベンション上に構成依存性を管理、プラグインからのMaven.

だいたいという標準javaのビルドは、mavenが、試験タスクをいくつかのカスタムステップでは次のようになります。

ます。gradle:

apply plugin:'java'
task test{
  doFirst{
    ant.copy(toDir:'build/test-classes'){fileset dir:'src/test/extra-resources'}
  }
  doLast{
    ...
  }
}

その上でgroovy書式を与えるより表現力してant/mavenの形式をサポートしています。

で上位集のAnt-利用できるすべてのAntタスクで、gradleとすぐに,groovyような書式では、が打ち出されている。-

ant.copy(file:'a.txt', toDir:"xyz")

または

ant.with{
  delete "x.txt"
  mkdir "abc"
  copy file:"a.txt", toDir: "abc"
}

私たちは、Gradleのを使用するとMavenとAntの上にそれを選びました。 Antは私たちに完全な柔軟性を与え、アイビーは、Mavenのより良い依存関係の管理を与えるが、マルチプロジェクトのビルドのために素晴らしいサポートがありません。あなたは、マルチプロジェクトのビルドをサポートするためのコードをたくさんやって終わります。また、いくつかのビルド・バイ・慣習を持つことはいいですし、より簡潔なスクリプトを構築します。 Mavenので、それはあまりにも遠く慣例により構築取り、ビルドプロセスをカスタマイズすることはハックになります。また、Mavenは、アーティファクトを公開し、すべてのプロジェクトを推進しています。時には、サブプロジェクトに分割プロジェクトを持っていますが、サブプロジェクトのすべてが構築され、一緒にバージョン管理することにしたいです。本当に何かMavenのは、のために設計されていない。

のGradleを使用すると、Mavenのの大会でのAntの柔軟性を持って構築することができます。例えば、あなた自身のタスクに、従来のビルドのライフサイクルを延長することは簡単です。そして、あなたは、あなたがしたくない場合は、規則を使用することを余儀なくされていません。 GroovyはXMLよりもコードに非常に良くあります。 Gradleではでは、リポジトリにそれぞれの成果物を公開することなく、ローカルファイルシステム上のプロジェクト間の依存関係を定義することができます。最後に、Gradleのは、アイビーを使用していますので、優れた依存関係の管理を持っています。私のための唯一の本当の欠点は、これまでに成熟したEclipseの統合の欠如ですが、Mavenのためのオプションは本当にはるかに良いではありません。

これはの私のの答えではない、それは間違いなく私と一緒に共鳴します。これは、2012年10月から技術レーダー ThoughtWorksのからだのます:

  

2つのことは、AntとのようなXMLベースのビルドツールで疲労を起こしています   Mavenの:あまりにも多くの怒りの先のとがった括弧やプラグインの粗   アーキテクチャ。構文の問題は、経由で対処することができるが、   世代は、プラグインアーキテクチャは深刻なビルドのための能力を制限します   より複雑になるプロジェクトとして優雅に成長するためのツール。我々は来ています   プラグインは、抽象化のレベルが間違っていることを感じ、好みにします   Gradleのような言語ベースのツールおよび彼らが提供していますので、代わりにレーキ   きめ細かい抽象化し、より柔軟長期ます。

Gradleンドがあり棟/組織化ソフトウェアです。使用したantの構築ソフトウェア自体のキャリアとして常に考え、実際に"buildit"の一部dev作業が必要なよう。数ヶ月後に当社増の疲れを使用しないバイナリのレポ-レート(赤チェックインザのvcs)として生活することになりましたタスクを調査します。始まったアイビーでできるボルトのant、なかなか運っ内蔵資料掲載のようにしました。私ためにmaven、ハッキングし離れたxml、素晴らしいのための簡単なヘルパー libった深刻な問題とバンドルプの準備を展開している。Hassledとはなかったのでしょうか?googlingのプラグインや読書のフォーラム巻き取ったダウンロード兆支援瓶各種プラグインするのに苦労したことを覚えています。最後に行ったため、gradle(にかなり苦この点、われる"べきではないこの難しい!!")

だから私の気分を始めました。たっどこかということです。私のような時間への移行っantモジュールをビルドファイルを基本とした。簡単に装着一画面になります。の"wow"でした:の構築 スクリプト xml、いかかでしょうか?この宣言の一つで依存関係は一行にとって非常に魅力的であるという>でそれを実証することができすべての依存関係のあるプロジェクトを一画面で見ることができます。それからして一定のロールは、あらゆる課題を抱えていくのがシンプルでエレガント。こうした理由:

  • groovyは非常に直感的のためのjavaベースのシステム開発
  • 文書である。
  • の柔軟性は無限大

今は私が考えた新機能を追加するビルドプロセス。どのよう病気でしょうか?

これは、ネイティブビルドを管理するためにも非常に簡単です。 AntとMavenは効果的にJavaの専用です。いくつかのプラグインは、いくつかのネイティブプロジェクトを処理しようとMavenのために存在し、彼らは効果的な仕事をしていません。 Antタスクは、ネイティブのプロジェクトをコンパイルすることを書くことができますが、彼らはあまりにも複雑で厄介です。

私たちは、他のネイティブビットのJNIとたくさんしてJavaを実行します。 Gradleのはかなり私たちのAntの混乱を簡素化。私たちはネイティブのプロジェクトに依存関係の管理を導入し始めたとき、それは厄介でした。我々はそれを行うにMavenを得たが、同等のGradleコードは、Mavenのに必要とされたもののほんの一部だった、と人々はMavenの達人になることなく、それを読んで、それを理解することができます。

私はエドストウブで、部分的に同意します。 Gradleのは間違いなく、Mavenのに比べて、より強力で、より柔軟長期的に提供しています。

のGradleするのmavenから移動するための評価を行った後、我々は二つの問題のために自分自身をMavenのために固執することを決めました 我々は、(速度はプロキシが働いていなかった、Mavenのより遅い)のGradleで遭遇します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top