Zamierzam uogólnić użycie gradle w moich projektach i chciałbym wszędzie ponownie używać tego samego pliku kompilacji. Niestety, mam problem ze zdefiniowaniem właściwości wymienionych w $ subject w jednym pliku, aby ułatwić migrację.
To jest klasa 1.6.
Co próbowałem, ale wszystkie próby zakończyły się niepowodzeniem:
gradle.properties
: nie można modyfikować nazwy (tylko do odczytu, trzeba użyć asettings.gradle
i nadpisać nazwę projektu głównego !);{source,target}Compatibility
nie brane pod uwagę;settings.gradle
: też{source,target}Compatibility
nie brane pod uwagę!
Jaka jest więc właściwa metoda, aby to osiągnąć? Co próbowałem do tej pory w gradle.properties
:
group = something
name = whatever # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!
A w settings.gradle
:
sourceCompatibility = "whatever"; # not taken into account!
EDYTUJ No cóż, problemu z nazwą po prostu nie da się rozwiązać; do końca użyłem innego pliku, który stosuję w pliku kompilacji. Obsługa „nazwy” naprawdę nie jest właściwa: /
EDYCJA 2 To jest teraz 2014 i gradle 1.12, a problem nadal nie został rozwiązany ...
Odpowiedzi:
gradle.properties:
theGroup=some.group theName=someName theVersion=1.0 theSourceCompatibility=1.6
settings.gradle:
build.gradle:
apply plugin: "java" group = theGroup version = theVersion sourceCompatibility = theSourceCompatibility
źródło
apply from: "other.gradle"
lubapply from: "http://my.server.com/other.gradle"
. Zauważ, że ta ostatnia nie jest obecnie buforowana. Aby uzyskać buforowanie, musiałbyś napisać wtyczkę binarną .apply from:
rozwiązania; jednak to nie rozwiązuje problemu z nazwą :(settings.gradle
. Jednak używanie wtyczki do ustawiania tej samej nazwy projektu w różnych kompilacjach wydaje się nieco dziwne.init.gradle
domu użytkownika (patrz instrukcja obsługi).Znalazłem rozwiązanie podobnego problemu. Używam Gradle 1.11 (od kwietnia 2014). Nazwę projektu można zmienić bezpośrednio w
settings.gradle
pliku w następujący sposób:rootProject.name='YourNewName'
Dba o przesłanie do repozytorium (Artifactory z wtyczką dla mnie) z poprawnym artifactId.
źródło
Ustawiłem nazwę podstawową artefaktu, aby była niezależna od nazwy projektu kompilacji, co pozwala mi osiągnąć to, co chcesz:
jar { baseName "core" }
Gdy ta właściwość jest ustawiona, nawet jeśli nazwa mojego projektu to „foo”, po uruchomieniu
gradle install
artefakt jest publikowany z nazwącore
zamiastfoo
.źródło
Najwyraźniej byłoby to możliwe w
settings.gradle
przypadku czegoś takiego.rootProject.name = 'someName' gradle.rootProject { it.sourceCompatibility = '1.7' }
Niedawno otrzymałem poradę, że właściwość projektu można ustawić za pomocą zamknięcia, które zostanie wywołane później, gdy projekt będzie dostępny.
źródło
użyj buildSrc z Gradle Kotlin DSL. Zobacz pełny działający przykład tutaj: GitHub daggerok / spring-fu-jafu-example buildSrc / src / main / java / Globals.kt
źródło