Как установить имя проекта/группу/версию, а также совместимость {source, target} в одном файле?
Я намерен обобщить использование gradle для моих проектов и хотел бы повторно использовать один и тот же файл сборки везде. К сожалению, я затрудняюсь определить свойства, указанные в $subject в одном файле, чтобы облегчить перенос.
Это gradle 1.6.
То, что я пробовал, не удалось при любых попытках:
-
gradle.properties
: невозможно изменить имя (только для чтения, нужно использовать settings.gradle
и переопределить имя корневого проекта!); {source,target}Compatibility
не учитывается;
-
settings.gradle
: {source,target}Compatibility
не учтено!
Итак, каков правильный метод для достижения этого? То, что я пробовал до сих пор в gradle.properties
:
group = something
name = whatever # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!
И в settings.gradle
:
sourceCompatibility = "whatever"; # not taken into account!
EDIT Ну, проблема "имя" просто не может быть решена; для остальных я использовал другой файл, который я применяю в файле сборки. "Управление именем" действительно неверно:/
EDIT 2 Теперь это 2014 и gradle 1.12, и проблема все еще не решена...
Ответы
Ответ 1
gradle.properties
theGroup=some.group
theName=someName
theVersion=1.0
theSourceCompatibility=1.6
settings.gradle:
rootProject.name = theName
build.gradle:
apply plugin: "java"
group = theGroup
version = theVersion
sourceCompatibility = theSourceCompatibility
Ответ 2
Я нашел решение аналогичной проблемы. Я использую Gradle 1.11 (в апреле 2014 года). Имя проекта можно изменить непосредственно в файле settings.gradle
следующим образом:
rootProject.name='YourNewName'
Это позаботится о загрузке в репозиторий (Artifactory с его плагином для меня) с правильным артефактом.
Ответ 3
Я устанавливаю baseName артефакта, чтобы он не зависел от имени проекта сборки, что позволяет мне достичь того, что вы хотите:
jar {
baseName "core"
}
С этим набором свойств, даже если мое имя проекта "foo", когда я запускаю gradle install
, артефакт публикуется с именем core
вместо foo
.
Ответ 4
По-видимому, это возможно в settings.gradle
с чем-то вроде этого.
rootProject.name = 'someName'
gradle.rootProject {
it.sourceCompatibility = '1.7'
}
Недавно я получил совет, что свойство проекта можно установить с помощью закрытия, которое будет вызываться позже, когда доступен Project.
Ответ 5
используйте buildSrc с Gradle Kotlin DSL, смотрите полный рабочий пример здесь: GitHub daggerok/spring-fu-jafu-example buildSrc/src/main/java/Globals.kt