'vấn đề' với một đa pom cha mẹ mô-đun là, mà không có hồ sơ phức tạp, nó khóa các mô-đun trong chu kỳ phát hành tương tự (giả sử bạn đang sử dụng Release Plugin, mà bạn nên có).
Cách tôi làm việc với Maven là phải có một pom mẹ rằng tuyên bố:
Mỗi mô-đun sẽ xóa cha mẹ làm cha mẹ nhưng cha mẹ không biết gì về mô-đun.
Lợi ích của việc này xuất phát từ lần cuối hai dấu đầu dòng ở trên, phần 'quản lý'. Bất cứ điều gì có trong phần 'quản lý' cần được redeclared trong một mô-đun muốn sử dụng một phụ thuộc cụ thể hoặc plugin.
Ví dụ phụ huynh có thể trông như thế này:
<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>
Và các mô-đun có thể trông như thế này:
<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>
Các module sẽ:
- có phụ thuộc vào
org.slf4j:slf4j-api:1.7.7:compile
, junit:junit:4.11:test
và commons-lang:commons-lang:2.6:compile
.
- có plugin
org.apache.maven.plugins:maven-assembly-plugin:2.4
Nguồn
2015-01-09 17:22:56
Bạn có thể vui lòng chia sẻ liên kết về cách thiết lập dự án với Maven và liên quan đến các dịch vụ nhỏ. Tôi có một máy chủ nguyên khối lò xo dựa trên maven mà tôi định di chuyển từ đó. – technazi
không thực sự là một cách cụ thể để tạo dự án maven với các dịch vụ vi mô. Cuối cùng những gì chúng ta có là dự án maven nhỏ, dự án cần: Đưa ra một API (với REST chẳng hạn), có các dịch vụ riêng của mình (được sử dụng như một lớp giữa các bộ điều khiển và các entitite), có lược đồ DB của riêng mình và không chia sẻ nó. Pom không có pom cha mẹ và không tạo dự án pom chia sẻ mà bạn sẽ sử dụng trong các dịch vụ vi mô khác nhau của bạn bởi vì giả sử nhóm A làm việc trên dịch vụ vi A và nhóm B làm việc trên MS B, nếu MS A và MS B sử dụng một dự án được chia sẻ, nếu đội A thay đổi nó, đội B sẽ không biết nó –