Как установить имя проекта/группу/версию, а также совместимость {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.