Wir verwenden Maven, um unsere Abhängigkeiten zwischen unseren Microservices zu definieren und zu verwalten. Hier ein Beispiel:Verwalten mehrerer Abhängigkeiten zwischen Microservices mit Maven
Micro 1
<artifactId>ms-1</artifactId>
<version>0.25.04-SNAPSHOT</version>
<dependencies>
<dependency>
<artifactId>ms-2</artifactId>
<version>0.25.00-SNAPSHOT</version>
</dependency>
</dependencies>
Micro 2
<artifactId>ms-2</artifactId>
<version>0.25.00-SNAPSHOT</version>
<dependencies>
<dependency>
<artifactId>ms-3</artifactId>
<version>0.28.00-SNAPSHOT</version>
</dependency>
</dependencies>
Das Problem ist, dass die Release-Phase viel Zeit nimmt und ist voll manuell:
- 0 durchführenzum ersten Micro (entfernt
-SNAPSHOT
) - Änderung der Version in
pom.xml
der Abhängigkeit mvn:release
für das zweite Microzuführen (entfernt-SNAPSHOT
)- usw. (tatsächlich auf 15 Microservices ...)
Ich frage mich, ob es eine automatisierte Möglichkeit gibt, diese Version (in Kaskade) durchzuführen?
Dank
Das ist interessant, ich wusste nicht über Maven Aggregator. Lass mich neu formulieren, um zu überprüfen, ob ich recht habe. Sie schlagen vor, ich ein engagiertes POM-Projekt zu schaffen, das alle meine Microservices als Modul definiert, und dann die Mavenziele anruft, um eine Freigabe durchzuführen? – frinux
@Frinux Das stimmt. Siehe [POM-Referenz, Aggregation] (https: //maven.apache.org/pom.html # Aggregation) und [Maven: Die vollständige Referenz, 3.6.2. Multi-Modul gegen Vererbung] (http://books.sonatype.com/mvnref-book/reference/pom-relationship-sect-pom-best-practice.html#pom-relationship-sect-multi-vs-inherit) für grundlegende Informationen. Siehe auch [diese Antwort] (http://stackoverflow.com/a/30953905/1744774) für die Zusammenarbeit von Phasen, Plugins, Zielen usw. –
Es gibt ein Detail, das ich vergessen habe zu erwähnen: Die Microservices konsumieren sich gegenseitig über ein JAR (HTTP client), das generiert wird, aber zum Zeitpunkt der Maven-Veröffentlichung nicht existiert. Es scheint, dass es unmöglich ist, ein Modul zu deklarieren, wenn es zum Zeitpunkt der Erstellung nicht existiert. Habe ich Unrecht? – frinux