Ich beabsichtige, die Verwendung von gradle für meine Projekte zu verallgemeinern und möchte überall dieselbe Build-Datei wiederverwenden. Leider habe ich Probleme, die in $ subject genannten Eigenschaften in einer einzigen Datei zu definieren, um die Migration zu vereinfachen.
Dies ist Gradle 1.6.
Was ich versucht habe, scheiterte bei allen Versuchen:
gradle.properties
: Name kann nicht geändert werden (schreibgeschützt, muss a verwendensettings.gradle
und den Namen des Stammprojekts überschreiben !);{source,target}Compatibility
nicht berücksichtigt;settings.gradle
: auch{source,target}Compatibility
nicht berücksichtigt!
Was ist die richtige Methode, um dies zu erreichen? Was ich bisher versucht habe in gradle.properties
:
group = something
name = whatever # cannot do!
version = whatever
sourceCompatibility = whatever # not taken into account!
Und in settings.gradle
:
sourceCompatibility = "whatever"; # not taken into account!
EDIT Nun, das "Name" -Problem kann einfach nicht gelöst werden. Im Übrigen habe ich eine andere Datei verwendet, die ich in der Build-Datei anwende. Die "Namens" -Handhabung ist wirklich nicht richtig: /
EDIT 2 Dies ist jetzt 2014 und Gradle 1.12, und das Problem ist immer noch nicht gelöst ...
Antworten:
gradle.properties:
settings.gradle:
build.gradle:
quelle
apply from: "other.gradle"
oderapply from: "http://my.server.com/other.gradle"
. Beachten Sie, dass Letzteres derzeit nicht zwischengespeichert ist. Um das Caching zu erhalten, müssten Sie ein Binär- Plugin schreiben .apply from:
Lösung. Dies löst jedoch nicht dassettings.gradle
. Es scheint jedoch etwas seltsam, ein Plugin zu verwenden, um den gleichen Projektnamen für alle Builds festzulegen.init.gradle
in Ihrem Benutzerhaus aus festzulegen (siehe Benutzerhandbuch).Ich habe die Lösung für ein ähnliches Problem gefunden. Ich verwende Gradle 1.11 (Stand April 2014). Der Projektname kann direkt in der
settings.gradle
Datei wie folgt geändert werden :Dies sorgt für das Hochladen in das Repository (Artifactory mit seinem Plugin für mich) mit der richtigen Artefakt-ID.
quelle
Ich habe das Artefakt baseName so festgelegt, dass es unabhängig vom Namen des Build-Projekts ist, wodurch ich das erreichen kann, was Sie wollen:
Mit dieser Eigenschaft
gradle install
wird das Artefakt beim Ausführen mit dem Namencore
anstelle von "foo" veröffentlicht, auch wenn mein Projektname "foo" istfoo
.quelle
Anscheinend wäre dies
settings.gradle
mit so etwas möglich .Ich habe kürzlich den Rat erhalten, dass eine Projekteigenschaft mithilfe eines Abschlusses festgelegt werden kann, der später aufgerufen wird, wenn das Projekt verfügbar ist.
quelle
Verwenden Sie buildSrc mit Gradle Kotlin DSL. Das vollständige Beispiel finden Sie hier: GitHub daggerok / spring-fu-jafu-Beispiel buildSrc / src / main / java / Globals.kt
quelle