2016-06-29 5 views
10

Ich bin derzeit versucht, ein Maven Projekt GradleWie kann ich eine Variable für die Abhängigkeits Version in Gradle definieren

In meiner Maven Version ich die Abhängigkeits Versionen wie dies alle aufgeführten heraus in meinem Eltern pom haben zu migrieren :

<properties> 
    <spring.version>4.2.3.RELEASE</spring.version> 
    <spring.boot.version>1.3.3.RELEASE</spring.boot.version> 
    ... 
</properties> 

Und dann kann ich eine Abhängigkeit wie dies in keinem meiner Submodule definieren:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>${spring.version}</version> 
</dependency> 

Ich versuche das gleiche unter Gradle zu tun, weil einige meiner Module solche Dependency-Versionen teilen, und ich möchte nicht mehr als einen Platz modifizieren, wenn ich Spring upgraden oder eine ähnliche Operation durchführen möchte.

Der nächstgelegene ich es bekommen haben, ist dies:

dependencies { 
    ext.springVersion = '4.2.3.RELEASE' 
    compile "org.springframework:spring-jdbc:$springVersion" 
} 

Doch die immer noch nicht funktioniert. Was ist der empfohlene Weg, dies in Gradle zu erreichen? Oder behandelt Gradle das anders? Vielleicht ist mein Verstand immer noch zu sehr auf Maven um eine andere Lösung zu sehen.

Bitte beachten Sie, dass dieser Versuch auf Gradle ist nicht genau was ich noch will. Ich würde gerne in der Lage sein, die Abhängigkeiten in einer separaten Datei zu definieren, nicht direkt in der Datei, die es verwenden wird.

+0

ich Beispiele mit diesem gesehen habe Zuweisung vor den Abhängigkeiten blockieren. Wenn du sagst "das geht immer noch nicht", was passiert genau? –

+0

Die IDE weist auf Fehler hin, die besagen, dass die Variable nicht gefunden wurde und importiert die Bibliothek nicht ... Aber vielleicht ist dies mehr mit IntelliJ IDEA verbunden, dann grätschst du dich selbst –

Antwort

5

Die Art und Weise, wie Sie die Abhängigkeitsversion angegeben haben, ist korrekt und sollte funktionieren. IntelliJ Idea hat einige Probleme mit Variablen innerhalb von Build Skripten, so dass Sie sich nicht darauf verlassen müssen, versuchen Sie einfach Ihren Build auszuführen und auszuchecken, ob Abhängigkeiten heruntergeladen wurden und Ihr Projekt korrekt erstellt wurde.

Wenn Sie Ihre Projektabhängigkeiten in der separaten Datei speichern möchten, besteht die gängigste Methode darin, sie im Stamm build.script zu definieren, über subprojects Closure für alle Unterprojekte oder über allprojects, wenn Sie die Abhängigkeit für alle angeben möchten Ihre Projekte enthalten die Wurzel. Dies wird wie folgt aussehen:

subprojects{ 
    dependencies{ 
     compile ... 
    } 
} 

diese Weise können Sie jede gemeinsame Konfiguration für Teilprojekte innerhalb der Wurzel Build-Skript zur Verfügung stellen können. Lesen Sie darüber the user guide

Oder Sie können eine Variable im root-Build-Skript deklarieren, initialisieren sie als eine Karte mit allen Abhängigkeiten Spezifikationen oder als Array mit einzelnen Abhängigkeiten Liste und verwenden Sie diese Variable in Ihren Teilprojekten, wenn Sie brauche sie. Etwas wie dies in der Wurzel:

ext.commomLibs = [ 
    'testlibs' : 'junit:junit:4.8' 
] 

Hinweis, können Sie einen Wert von der Karte als ein Array von der lib-Spezifikation definieren, um es zu all diesen Abhängigkeiten zeigen zu machen.Und dann können Sie es in Ihrem Teilprojekte wie verwenden:

dependencies{ 
    testCompile commomLibs.testlibs 
} 

Eine weitere Alternative ist separaten Build-Skript mit Abhängigkeiten zu verwenden und es auf dem buils Skript Sie benötigen, wie so

apply from: 'dependencies.script' 

Dann sind Sie Sie können Ihre Abhängigkeiten in Abhängigkeitskripte setzen und sie einfach in jedem anderen Buildskript anwenden, wo Sie diese Abhängigkeiten benötigen und/oder eine allgemeine Logik verwenden können.

2

Unter Konfiguration in build.gradle Datei funktionierte für mich mit gradle version 4.5 es hier für die Zukunft veröffentlichen - „ext“

ext { 
    springVersion = '5.0.3.RELEASE' 
} 

dependencies { 
    compile "org.springframework:spring-context:${springVersion}" 
}