繼續上一節講Maven的內容,我們這個節繼續講Maven繼承和聚合的其他內容。
現在我們新建一個實例來測試Maven有關於聚合的部分
測試開始
一、建立以pom為packaging的項目為,然后再以這一個項目為parent project來聚合其他子項目
- 新建立一個以pom的項目

- 改寫pom文件,依賴web-common,這樣就可以將web-common中的jar包都實現過來,這個有點像 java中implement了一個接口后,在實現了吧。我們是packaging為pom的項目,所以也是給准備實現了該maven的project,做好鋪墊吧。
-
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>web-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.company</groupId>
<artifactId>web-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>web-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
- 所以我們會看到項目的初始文件目錄,很簡單

|
二、我們接下來要根據上面建立的項目實現聚合的例子
三、同時我們再建立以web-test為基礎的web-test-mapper和web-test-service的module,這個和步驟二是一模一樣的,唯一有區別的地方就是建立完后要在pom文件中加入每個模塊自己單獨需要的dependencies。另外一個就是web-test-mapper是依賴於web-test-pojo,所以web-test-mapper中的dependencies是含有web-test-pojo的dependency,而web-test-service則是依賴於web-test-mapper。所以下面將展示web-test-mapper和web-test-service的pom文件。
- web-test-mapper的pom文件如下:
-
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>web-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web-test-mapper</artifactId>
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>web-test-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
</project>
- web-test-service的pom文件
-
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>web-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web-test-service</artifactId>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>web-test-mapper</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</dependencies>
</project>
|
四、建立以war為基礎的Maven項目,我們之前已經建立了三個以web-test為parent的Maven的jar的模塊,但是要發布一個web項目,必須是有war包,war中才含有文件夾來存放前端的js,jsp等文件啦。和上面一樣,在web-test上面創建module,不同的是,創建的packaging是war
- 創建一個module

- 選擇war

- 在pom文件中加入自己想要的dependency
-
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>web-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web-test-web</artifactId>
<packaging>war</packaging>
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>web-test-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- JSP相關 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- 文件上傳組件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
</dependencies>
</project>
|
五、此時,我們可以看到web-test其實已經聚合四個module,四個module在web-test的基礎建立起來,但是他們又是一個整體,所以,當項目發布的時候,其實以web-test為單位的。
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>web-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.company</groupId>
<artifactId>web-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>web-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<modules>
<module>web-test-pojo</module>
<module>web-test-mapper</module>
<module>web-test-service</module>
<module>web-test-web</module>
</modules>
</project>
六、其實到了這里,我們就把一個項目的聚合和模塊被聚合的例子講完了,但是如果要跑這個項目也是可以的。