Как исключить задачу или метод gradle во время сборки
Я определил задачу, которая читает файл свойств и обновляет определенное поле. Я хочу, чтобы это запускалось только тогда, когда я выполняю команду release, а не во время сборки.
Я использую этот плагин Gradle-релиз для выпуска: 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"
1 ответ
Вам нужно добавить
<<
илиdoLast
заблокировать определение вашей задачи. В противном случае он будет запускаться на этапе настройки, что практически всегда происходит при выполнении любой другой задачи. см. здесь: Почему всегда выполняется моя задача Gradle?Не существует удобного способа вызвать / вызвать задачу из другой задачи напрямую, как вы пытались сделать в
uploadArchives
вместо этого вы используетеdependsOn
или жеfinalizedBy
настроить зависимости задачи. Если uploadArchives зависит от restoreCurrentVersion, restoreCurrentVersion будет вызываться первым при каждом вызове uploadArchives.