Як встановити назву проекту / групу / версію проекту, а також сумісність {source, target} у тому самому файлі?


84

Я маю намір узагальнити використання gradle для своїх проектів і хотів би повторно використовувати той самий файл збірки скрізь. На жаль, у мене виникають проблеми із спробою визначити властивості, згадані в $ subject, в одному файлі, щоб полегшити міграцію.

Це gradle 1.6.

Те, що я пробував, не вдаючись при будь-яких спробах:

  • gradle.properties: не може змінити ім'я (лише для читання, потрібно використовувати a 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
FYI, неможливість налаштувати назву проекту у файлі build.gradle наразі є запитом на вдосконалення: issues.gradle.org//browse/GRADLE-2412 .
Райан Нельсон,

Відповіді:


127

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

Отже, ви хочете повторно використовувати всі збірки? Ви можете зробити apply from: "other.gradle"або apply from: "http://my.server.com/other.gradle". Зверніть увагу, що остання наразі не кешована. Щоб отримати кешування, вам доведеться написати двійковий плагін.
Peter Niederwieser

Так, я використовую apply from:рішення; однак це не вирішує проблему з назвою :(
fge

1
Я думаю, що в останній Gradle ви також можете застосувати плагін settings.gradle. Однак, здається трохи дивним використовувати плагін для встановлення одного і того ж імені проекту у збірках.
Петер Нідервізер,

Зверніть увагу, що також можна встановити всі ці властивості з init.gradleдому у вашому домі користувача (див. Посібник користувача).
Петер Нідервізер,

1
Вам не потрібно визначати змінні у gradle.properties і використовувати в settings.gradle. Ви можете просто згадати в settings.gradle rootProject.name = "someName". Обов’язково вкажіть це у подвійних лапках у settings.gradle.
Gopinath MR

22

Я знайшов рішення подібної проблеми. Я використовую Gradle 1.11 (станом на квітень 2014 р.). Ім'я проекту можна змінити безпосередньо у settings.gradleфайлі наступним чином:

  rootProject.name='YourNewName'

Це дбає про завантаження до сховища (Artifactory з його плагіном для мене) з правильним artifactId.


2
Це рішення менш ніж ідеальне для збірки багатопроектних проектів.
asandroq

@asandroq, оскільки у вас може бути лише один файл налаштувань, вам доведеться перейменовувати підмодуль звідти. Це центрально, але це працює.
Snicolas

19

Я встановив артефакт baseName, щоб він не залежав від назви проекту збірки, що дозволяє мені досягти того, що ви хочете:

jar {
    baseName "core"
}

За допомогою цієї властивості, навіть якщо моє ім'я проекту "foo", під час запуску gradle installартефакт публікується з ім'ям coreзамість foo.


1
Не допомагає всім іншим завданням, які б використовували назву проекту, і може створити додаткову плутанину щодо суперечливих імен ...
Кварц

4

Очевидно, це могло б статися settings.gradleз подібним чином.

rootProject.name = 'someName'
gradle.rootProject {
    it.sourceCompatibility = '1.7'
}

Нещодавно я отримав пораду, що властивість проекту можна встановити, використовуючи закриття, яке буде викликано пізніше, коли проект стане доступним.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.