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.

Другие вопросы по тегам