Ich habe ein Problem mit dem Aktualisieren der Abhängigkeitsversion von abhängigen Geschwisterprojekten.
Mein vereinfachtes Projekt sieht folgendermaßen aus.
root
|--parent
|--tool-core
|--tool
|--functional-tests
Das übergeordnete Projekt enthält alle globalen Eigenschaften und das Abhängigkeitsmanagement. Die funktionalen Tests hängen vom Tool ab, und das Tool hängt vom Tool-Core ab. Die Wurzel pom.xml
nur aggregiert (gibt an, ob die funktionalen Tests einbezogen werden) und das übergeordnete Projekt ist das übergeordnete Projekt für alle Projekte. Ich weiß nicht, ob dies trivial ist, aber das übergeordnete Projekt wird nicht in die Aggregation einbezogen, da es bereits das übergeordnete Projekt für jedes untergeordnete Projekt ist.
Mein Problem ist, wenn ich die Version des Tools mit versions:set
. Die Version des Werkzeugs wird geändert, aber die Abhängigkeiten zum Werkzeug werden nicht geändert. Wie sollte ich dies tun? Ich habe bereits versucht, mehr oder weniger zufällig andere Ziele und ich habe versucht, das Handbuch zu lesen.
Ich habe bereits versucht, die <dependencyManagement>
Abschnitt und eine Eigenschaft für die Version im übergeordneten Abschnitt, aber diese werden nicht auf die neue Version aktualisiert.
Für jede Hilfe sind wir sehr dankbar.
Zusatz
Im besten Fall erhalte ich die Meldung "Ignoring reactor dependency: com.tool:tool:jar:null:1.2.3". Dies ist, wenn ich versuche versions:use-latest-releases
. Allerdings, versions:display-dependency-updates
zeigt, dass es eine Aktualisierung einer "lokalen Abhängigkeit" gibt (Funktionstests hängen vom Tool ab).
Update
Es scheint, dass Maven nach neuen Versionen in den Repositories sucht, einschließlich des lokalen Repositories, was ziemlich offensichtlich erscheint, wenn ich daran denke. Dies bedeutet jedoch, dass das Tool gebaut und im lokalen Repository installiert werden muss, bevor die Abhängigkeiten aktualisiert werden.
Ich frage mich nur, ob dies der richtige Weg ist, um Integrationstests als eigenes Projekt zu haben. Ich hatte gehofft, dass es eine Möglichkeit geben würde, die Version sofort zu aktualisieren.
Update
Grundsätzlich habe ich die folgende Konfiguration. Die Versionsabhängigkeit von functional-tests
der tool
wird definiert durch den parent
Projekt. Ich habe die tool-core
da sie als Teil des Programms tool
.
Wurzel:
<groupId>com.somecompany</groupId>
<artifactId>x-reactor</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<profiles>
<profile>
<id>cli</id>
<modules>
<module>tool</module>
</modules>
</profile>
<profile>
<id>deploy</id>
<modules>
<module>tool</module>
<module>functional-tests</module>
</modules>
</profile>
</profiles>
Elternteil:
<groupId>com.somecompany</groupId>
<artifactId>x-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.somecompany</groupId>
<artifactId>tool</artifactId>
<version>3.2.3</version>
</dependency>
</dependencies>
</dependencyManagement>
Werkzeug:
<parent>
<groupId>com.somecompany</groupId>
<artifactId>x-parent</artifactId>
<version>1.0</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>com.somecompany</groupId>
<artifactId>tool</artifactId>
<packaging>jar</packaging>
<version>3.2.3</version>
Funktions-Tests:
<parent>
<groupId>com.somecompany</groupId>
<artifactId>x-parent</artifactId>
<version>1.0</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>functional-tests</groupId>
<artifactId>functional-tests</artifactId>
<version>0.1</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.somecompany</groupId>
<artifactId>tool</artifactId>
</dependency>
</dependencies>