"Problem" z wieloma Moduł parent parent jest taki, że bez skomplikowanych profili blokuje moduły w tym samym cyklu wydawania (zakładając, że używasz Release Plugin, którą powinieneś być).
Sposób pracuję z Maven jest mieć pom nadrzędnego, który oznajmia:
Każdy moduł niszczy rodzica pom jako jego rodzica, ale rodzic nie wie nic o modułach.
Korzyść z tego wynika z ostatnich dwóch punków powyżej, sekcji "zarządzanie". Wszystko, co znajduje się w sekcji "zarządzanie", musi zostać ponownie zadeklarowane w module, który chce użyć określonej zależności lub wtyczki.
Na przykład rodzic może wyglądać następująco:
<project>
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.0.00-SNAPSHOT</version>
...
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>2.1</version>
</dependency>
</dependencyManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</project>
I moduł może wyglądać następująco:
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>parent</artifactId>
<version>1.0.00-SNAPSHOT</version>
</parent>
<groupId>com.example</groupId>
<artifactId>module</artifactId>
<version>1.0.00-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
</dependencies>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
</plugins>
</project>
Moduł będzie:
- mieć współzależności na
org.slf4j:slf4j-api:1.7.7:compile
, junit:junit:4.11:test
i commons-lang:commons-lang:2.6:compile
.
- ma wtyczki
org.apache.maven.plugins:maven-assembly-plugin:2.4
Czy możesz podzielić się linkiem, jak skonfigurować projekt z Maven i angażować mikroserwisy. Mam bazujący na maven wiosenny monolityczny serwer, z którego zamierzam migrować. – technazi
nie istnieje naprawdę konkretny sposób tworzenia projektu maven z usługami mikro. Na koniec mamy mały projekt, projekt musi: Ujawniać API (z REST na przykład), mieć własne usługi (używane jako warstwa pomiędzy kontrolerami i uprawnieniami), mieć własny schemat bazy danych, a nie udostępniać to. Pom nie ma macierzystej pom i nie tworzy wspólnych projektów pom, które będziesz używał w twoich różnych mikroukładach, ponieważ powiedzmy, że zespół A pracuje nad mikro usługą A, a zespół B pracuje nad MS B, jeśli MS A i MS B używa wspólnego projektu, jeśli zespół A go zmieni, zespół B nie wie, że to jest –