モチベーション
とあるプロジェクトでgradle-release pluginを使っているのですが、DockerでJarをビルドするときにこのプラグインを設定していると .git
ディレクトリをコピーしないと(プロジェクトがGitリポジトリじゃないと)最初のbuild.gradle
の検証で失敗してしまうのですが、無駄なレイヤーが増えるのでDockerコンテナ上に.git
はあまりコピーしたくない。なので、releaseタスクを実行するときのみ上記のプラグインを有効にしたい。
方法
こちらの記事 を参考にさせてもらいました。プラグインを指定するときにapply false
をつけてallprojects
ブロックの中で指定したプロパティがあるかをを使って遅延applyします。
before
plugins { id "net.researchgate.release" version "2.8.0" } release { git { requireBranch = 'master' } }
after
plugins { id "net.researchgate.release" version "2.8.0" apply false } allprojects { if (properties.get("enableReleasePlugin") == "true") { apply plugin: "net.researchgate.release" release { git { requireBranch = 'master' } } } }
これで、実行時に -PenableReleasePlugin=true
をつけたときのみプラグインが適用されます。
$ ./gradlew release -PenableReleasePlugin=true