Maven聚合與繼承的實例講解(二)


   繼續上一節講Maven的內容,我們這個節繼續講Maven繼承和聚合的其他內容。

   現在我們新建一個實例來測試Maven有關於聚合的部分
   
測試開始

一、建立以pom為packaging的項目為,然后再以這一個項目為parent project來聚合其他子項目
       
  • 新建立一個以pom的項目
  • 改寫pom文件,依賴web-common,這樣就可以將web-common中的jar包都實現過來,這個有點像 java中implement了一個接口后,在實現了吧。我們是packaging為pom的項目,所以也是給准備實現了該maven的project,做好鋪墊吧。
    1. <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這個項目,右鍵,新建一個maven的module
  • 創建一個來存放pojo的module部分,packaging為jar(不要選擇pom或者war,具體看上一篇)

  • 點擊finish
  • 這個時候,我們會發現web-test中的pom文件多了下面的內容
    1. <modules>
      <module>web-test-pojo</module>
      </modules>

       

  • 說明我們把web-test-pojo已經聚合到web-test中去了。
  • 同時web-test-pojo的內容是繼承了web-common中的部分內容,而web-test-pojo的pom其實是不用修改的。

 
 
 
三、同時我們再建立以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文件如下:
    1. <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文件
    1. <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
    1. <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>

 




 
 
六、其實到了這里,我們就把一個項目的聚合和模塊被聚合的例子講完了,但是如果要跑這個項目也是可以的。
  • 在web-test中pom的文件加入以下內容,將tomcat的插件配置到web-test中去
  1. <build>
    <!-- 配置插件 -->
    <plugins>
    <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <configuration>
    <port>8080</port>
    <path>/</path>
    </configuration>
    </plugin>
    </plugins>
    </build>

     

  • 另外在,web-parent和web-common安裝到本地的倉庫中去
    在web-parent項目上面右鍵,然后run as 
  • 然后在goal 填入install
  • 同樣的步驟在web-common項目執行
  • 執行后,在web-test這個主項目中run下面的代碼  clean tomcat7:run


    最后就可以登陸看web-test中的首頁了,嘻嘻

    
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM