プロパティ ファイルを読み取り、特定のフィールドを更新するタスクを定義しました。「ビルド」中ではなく、「リリース」を実行したときにのみ実行したい。
私はリリースのためにこのgradle-releaseプラグインを使用しています: https://github.com/researchgate/gradle-release
このプラグインは、リリースごとに gradle.properties ファイルのバージョンを次のバージョンに更新します。現在のバージョン番号も保持する必要があるため、このメソッドを作成しました。
ただし、ビルドを行うたびにこのタスクが実行されます。私はそれをメソッドに変更しようとし、「リリース」中にのみ実行されると思われる「uploadArchives」内でメソッドを呼び出しました。それでも成果なし。ビルドごとに実行し続けます!
「ビルド」から除外して、リリースの場合にのみ呼び出すにはどうすればよいですか?
タスクといくつかのコード スニペットを次に示します。
task restoreCurrentVersion {
try {
String key = 'currentVersion'
File propertiesFile = project(':commons').file("gradle.properties")
String currentVersion = project(':commons').version
this.ant.replaceregexp(file: propertiesFile, byline: true) {
regexp(pattern: "^(\\s*)$key(\\s*)=(\\s*).+")
substitution(expression: "\\1$key\\2=\\3$currentVersion")
}
} catch (BuildException be) {
throw new GradleException('Unable to write version property.', be)
}
}
uploadArchives {
repositories.mavenDeployer {
repository(url: 'file://Users/my.home/.m2/repository/')
}
// restoreCurrentVersion() //Uncommenting this makes the method (when converted the above task to a method) to execute always
}
createReleaseTag.dependsOn uploadArchives
ext.'release.useAutomaticVersion' = "true"