LoginSignup
2
2

More than 5 years have passed since last update.

GradleでプロジェクトごとにCopy.expandの引数を切り替える

Last updated at Posted at 2014-11-04

やりたいこと

Copy.expandは環境に応じてプロパティを変えるのに使うことが多いかと思いますが、今回はマルチプロジェクト構成でプロジェクトごとにプロパティを変える必要があったので用意しました。

ディレクトリ構成はこんな感じ。

├── build.gradle
├── proj-a
│   ├── build.gradle
│   └── properties
├── proj-b
│   ├── build.gradle
│   └── properties
├── properties
│   └── fileA
└── settings.gradle

build scripts

build.gradle
subprojects {
    task filterProperties (type: Copy) {
        afterEvaluate { project ->
            from('../properties')
            into('properties')
            expand(project.props)
        }
    }
}

rootのbuild.gradleでタスクを定義します。afterEvaluateを使うのが味噌でこれがないと、projectがrootを指します。

proj-a/build.gradle
ext {
    props = [
        hoge: 'proj-a'
    ]
}
proj-b/build.gradle
ext {
    props = [
        hoge: 'proj-b'
    ]
}

各々のプロジェクトのbuild.gradleでextを定義します。もちろんrootで全部定義することもできます。

build結果

properties/fileA
hoge=${hoge}
proj-a/properties/fileA
hoge=proj-a
proj-b/properties/fileA
hoge=proj-b
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2