2017-11-18 8 views
0

Ich habe ein Multi-Modul-Projekt, das core und client enthält. client hängt von core die wie folgt erklärt:Ändern der Abhängigkeit Versionsnummer in Multi-Projekt-Graadle Build

dependencies { 
    compile project(':core') 
} 

Wenn ich core und client zu Ivy zu veröffentlichen oder die Abhängigkeit client-core Maven nutzt die genaue Version, die derzeit für die core (z 1.0.0) definiert ist.

Gibt es eine Möglichkeit, das zu ändern? Nehmen wir an, die core ist garantiert kompatibel zwischen Nebenversionen. Also statt 1.0.0 möchte ich die Abhängigkeit zu Version 1.+ sein.

+1

https : //docs.gradle.org/current/userguide/publishing_maven.html#sec: modifying_the_generated_pom –

+0

Dann zögern Sie nicht, Ihre Lösung in eine Antwort zu setzen. –

+0

Ich frage mich, warum wollen Sie das tun, da sie eng zwischen den mehreren Modulen gekoppelt sind. – chenrui

Antwort

0

Um die Version in der generierten pom.xml ersetzt ich eine Hilfsfunktion erstellt:

// helper function to replace dependency version in maven pom.xml 
def replaceDependencyVersion(root, groupId, artifactId, version) { 
    // replace version 
    root.dependencies.dependency.findAll() { node -> 
     node.groupId.text() == groupId && node.artifactId.text() == artifactId 
    }.each() { node -> 
     node.version*.value = version 
    } 
} 

Diese Funktion kann dann bei der Veröffentlichung verwendet werden, um die Versionsnummer zu ersetzen:

// publishing 
publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 

      pom.withXml { 
       replaceDependencyVersion(asNode(), 'com.test', 'core', '1.+') 
      } 
     } 
    } 
} 
Verwandte Themen