Как установить project.version, передав свойство версии в командной строке gradle?
Я хочу создать JAR с самоопределенной версией, переданной через командную строку, например:
Когда я выполняю задачу сборки gradle следующим образом:
gradle build -Pversion=1.0
myproject-1.0.jar должен быть сгенерирован.
Я попытался добавить строку ниже к build.gradle, но она не сработала:
version = project.hasProperty('version') ? project['version'] : '10.0.0'
Ответы
Ответ 1
Вы не можете переопределить существующие свойства проекта из командной строки, посмотрите здесь. Поэтому попробуйте переименовать переменную версии в нечто отличное от версии и установите ее перед -P
перед командой, например:
gradle -PprojVersion=10.2.10 build
И затем в вашем файле build.gradle
if (project.hasProperty('projVersion')) {
project.version = project.projVersion
} else {
project.version = '10.0.0'
}
Или как вы это сделали?: operator
Ответ 2
Задайте свойство только в файле gradle.properties
(т.е. удалите его из build.gradle
). Также убедитесь, что параметры указаны перед командой (как упомянуто выше).
содержимое gradle.properties:
version=1.0.12
Версия может быть переопределена в командной строке с помощью:
gradle -Pversion=1.0.13 publish
Ответ 3
Если вы перемещаете запись version
в файл gradle.properties
, вы также можете:
gradle clean build -Dorg.gradle.project.version=1.1
Ответ 4
Если вам нужна версия по умолчанию, отличная от "неуказанная":
version = "${version != 'unspecified' ? version : 'your-default-version'}"
Пропустить версию через командную строку:
gradle build -P version=1.0
Ответ 5
version = (findProperty('version') == 'unspecified') ? '0.1' : version
Ответ 6
Вы можете передать версию проекта на cli с помощью -Pversion=...
, если не установите ее в build.gradle. Если вам нужно пользовательское значение по умолчанию для случаев, когда в cli не передается версия, используйте файл gradle.properties, например, так: version=...
TL; DR: не устанавливайте версию в файле build.gradle, если вы хотите изменить ее позже через cli.