エンタープライズプロジェクトでは、複雑なプロジェクトを複数の小さなプロジェクトに分割して共同作業を完了することがよくあります。そのため、複数のプロジェクトを構築する必要があります。複数のプロジェクトの構築には、大規模なプロジェクトのモジュール化と、モジュールの連携による機能全体の完成が必要です。
マルチプロジェクトのビルディングブロックの分割と依存関係
構造との関係にモジュールを行うためのレビューサイト(コメント)で以下に示すように、モジュールが分かれています:
コア:ビジネス層を含む共通コアコード、コードデータアクセス層の
モデル:モデルのデータカプセル化するための
管理者を:管理ビューとコントローラー
Webを含むモジュール:ビューとコントローラーを含むユーザー操作モジュール
以前のMavenを使用したマルチプロジェクトビルドでは、すべてのモジュールを一元管理するためにルートプロジェクトが一般的に必要でした。Gradleも同じです。また、すべてのモジュールを統合して管理するためにルートプロジェクトが必要です。関係図は次のとおりです。
すべてのプロジェクトの共通構成(ルートプロジェクトを含む)はすべてのプロジェクトで構成され、すべてのサブモジュールの共通構成はサブプロジェクトで構成され、ビルドされます。プロジェクトのGradle構成項目は、すべてのプロジェクト/サブプロジェクトで構成できます。
デモコンテンツ:
- すべてのプロジェクトはJavaプラグインを使用する必要があり、WebプロジェクトもJava環境に依存する必要があります
- Webサブプロジェクトはwarパッケージである必要があります
- 共通の属性(グループ、バージョンなど)の統合構成
- リソースライブラリの統合管理
- ログバックログ機能の導入など、一般的な依存関係の構成
デモ手順の例
ルートプロジェクトとすべてのサブモジュールプロジェクトを作成する
-
Gradle Javaプロジェクト、ArtifactId:コメントを作成します。
-
コメントプロジェクトの下にコアモジュールを作成します。ArtifactId:core
-
コメントプロジェクトの下にモデルモジュールを作成し、ArtifactId:モデルの
具体的な作成手順はコアの手順と同じです -
コメントプロジェクトの下に管理モジュールを作成します。ArtifactId:adminの
他の手順は上記の手順と同じですが、この管理がWebプロジェクトであるため、Webを確認する必要があります。
-
コメントプロジェクトの下にWebモジュールを作成します。ArtifactId:web
とadminは同じです以下のように作成したすべてのモジュール、プロジェクト構造の後:
:未満、それがルートで、最終的なプロジェクト構造は以下のようにするので、選択したフォルダSRC SRC削除された地図上になります
私たちは、setting.gradle見ますファイル:
ルートディレクトリはコメントで、4つのモジュールが含まれているため、プロジェクトが作成されます。
Gradleを構成する
依存関係を構成する
コア依存モデルを例に取る
dependencies {
//core 依赖model子模块
compile project(":model")
testCompile group: 'junit', name: 'junit', version: '4.12'
}
同様に、管理とウェブはコアに依存することができます
設定共通Javaプラグインの紹介
コメントプロジェクトのbuild.gradleで、javaプラグインとバージョン紹介構成がすべてのプロジェクトに転送されます。これは、管理プロジェクトとしてのルートプロジェクトもjavaプラグインを追加する必要があるため、サブプロジェクトをここで使用できないためです。
//配置统一的信息,包括root项目
allprojects {
//统一引入 java插件和版本指定
apply plugin: "java"
sourceCompatibility = 1.8
//统一配置公共属性,例如group,version
group 'top.zhexi'
version '1.0-SNAPSHOT'
}
すべてのサブモジュールでJavaプラグインの概要とバージョン仕様を削除
ビルド検証
パブリックリソースライブラリを構成します。構成が完了すると、各モジュールにログバックの依存関係があることがわかります
//配置共用资源库
subprojects {
repositories {
mavenCentral()
}
dependencies {
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}
}