2012-12-14 6 views
8

gradleでは、典型的なJavaプロジェクトレイアウト(src/main/java)ではなく、buildSrcファイルをトップレベルとして使用する目的は何ですか?gradleのbuildSrcフォルダの目的は何ですか?

私は違い(またはこれを行う理由)だろう何

src 
    main 
     java 

または

buildSrc 
    src 
     main 
      java 

のレイアウトを持っている場合は?マルチモジュールプロジェクトでもっと役立つのですか?でも、マルチモジュールプロジェクトのために、私はプロジェクト間で共通の設定を定義し

proj1 
    src 


proj2 
    src 

そしてちょうど(proj1proj2と同じレベルで)トップレベルのbuild.gradleを持っているような何かを行うことができませんでしたか?

答えて

22

buildSrcは、その目的ビルドスクリプトのメインビルドので使用されることが意図されているすべてのタスク、プラグイン、または他のクラスを構築することで、別ビルドですが、全体のビルドを共有する必要はありません。 (*)メインビルドのビルドスクリプトがコンパイル/評価される前に存在しなければならないため、メインビルドの一部としてそのようなクラスを構築することはできませんし、Gradleはすべてのビルドスクリプトをコンパイル/評価します任意の作業(構成対実行フェーズ)。

すべてのビルドコードをビルドスクリプトに入れるのと比べて、buildSrcは、通常のコードと同じようにビルドコードを開発する方法を提供します。テストできるクラス、IDEにインポートするなどです。ビルドスクリプトより複雑なビルドであってもシンプルでDRYが可能です。

buildSrcは、より大きなビルドが独自のカスタムタスクやプラグインを実装する可能性が高いため、マルチプロジェクトビルドでよく見られます。

時間の経過とともに、buildSrcは、複数の依存するビルドを1回のGradle呼び出しで実行するより一般的な機能に成長します。

(*)ビルド間でクラスを共有することは可能ですが、より複雑です。特に、クラスをリポジトリに公開する必要があり、ビルド間でプロダクションライブラリを共有する場合と同様に、消費するビルドはそこから明示的にインポートする必要があります。

+0

詳細な説明をありがとうございます! –

関連する問題