Gradle-эквивалент maven-версии-плагина
Это мое build.gradle
:
group 'whatever'
version '1.0.0-SNAPSHOT'
...
dependencies {
compile 'whatever:2.2.1-SNAPSHOT'
}
Я хочу автоматизировать процесс выпуска, который включает в себя необходимость установить обе версии на конкретные значения, например 1.1.0
или же 2.2.0
используя только командную строку. Любой вид автоинкремента не вариант.
С Maven я бы сделал это используя maven-versions-plugin
:
mvn versions:set -DnewVersion=${WHATEVER_NEW_VERSION}
Как я могу сделать то же самое с Gradle? Я только нашел этот вопрос без ответа. Должен быть какой-то простой способ сделать это?
4 ответа
Я закончил тем, что извлек номера версий в gradle.properties
и обновлять их как часть сценария автоматической сборки, используя sed:
sed -i -e \"/someVersionNumber=/ s/=.*/=${SOME_NEW_VERSION_NUMBER}/\" gradle.properties
Это то, что я хочу. Хотя для меня, исходя из опыта Maven, это не кажется естественным. Я могу исследовать другую альтернативу позже.
Хотя это не относится к публикации, один из способов передачи свойств командной строки заключается в следующем:
gradle -PWHATEVER_NEW_VERSION=2.0.0
Рассмотрим следующее build.gradle
фрагмент кода:
def newVersion = project."WHATEVER_NEW_VERSION"
println newVersion
Увидеть ~/utils/gradle/version.gradle
в этом проекте для другого подхода. Он использует отдельные переменные среды для основной, вспомогательной и инкрементной версий, а затем автоматически создает строку. Потому что он находится в gradle
каталог, он может быть просто импортирован в build.gradle
, который скрывает какой-то шаблон.
Пару раз я успешно использовал плагин Axion Release и остался очень доволен. По функциональности он наиболее близок к тому, что у Maven
Я добавил эту строку вbuild.gradle.kts
version = System.getenv("NEW_VERSION") ?: "0.0.1-SNAPSHOT"
Не полностью эквивалентно, но отлично работает внутри сценариев CI/CD.