質問編集履歴

1

b7n

b7n score 28

2017/07/21 12:45  投稿

Gradleサブプロジェクトごとにbuildscriptプラグイン依存関係切り替え
サブプロジェクトごとにプラグインを切り替えたい
###前提・実現したいこと
Gradleのマルチプロジェクトを作っています。
以下の3つのプロジェクトの`build.gradle`を共通化しようとしました。
```
/ rootproject
├ project1
│ └ build.gradle
├ project2
│ └ build.gradle
├ project3
│ └ build.gradle
└ build.gradle
```
###発生している問題・エラーメッセージ
`/rootproject/build.gradle`に`subprojects`ブロックを使い処理を共通化しようと試みました。
`apply plugin: `の部分はサブプロジェクトごとに切り替えられそうですが、`buildscript`>`dependencies`>`classpath`の部分はうまく切り替えられません。
サブプロジェクトごとにプラグインの依存関係を切り替える良い方法はないでしょうか?
###該当のソースコード
```gradle
//rootproject/build.gradle
```
```gradle
//rootproject/project1/build.gradle
buildscript {
repositories {
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
}
}
apply plugin: 'forge'
```
```gradle
//rootproject/project2/build.gradle
buildscript {
repositories {
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
```
```gradle
//rootproject/project3/build.gradle
buildscript {
repositories {
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
```
###試したこと
```gradle
//rootproject/build.gradle
subprojects {
buildscript {
repositories {
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
classpath project.forgegradle // gradle.propertiesにて外部化
}
}
apply plugin: project.forgegradle_plugin // gradle.propertiesにて外部化
}
```
###補足情報(言語/FW/ツール等のバージョンなど)
gradle-2.12 (バージョンは変更しても良い)
  • Gradle

    169 questions

    Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る