使用maven warpath插件合併多module的war包

使用maven warpath插件合併多module的war包

如今java 項目通常使用maven、gradle等工具來管理jar包、打包、發佈。若是一個項目有不少模塊,那般是分紅多個module,主目錄有個parent,負責包含所有的module,而後目錄中多個module文件夾,分別依賴parent或者其餘module。最近遇到個項目,項目好久,代碼所有放在一塊兒,隨着業務拓展變得與愈來愈龐大,因而其對進行module拆分。 java

問題

  1. 多個模塊可能交叉依賴。
  2. 每一個模塊可能都會有前臺頁面的代碼,jsp、js等。
  3. maven打包的時候可否war包、jar包一塊兒打。

解決方式

  1. 交叉依賴必須解決,儘量多的剝離獨立代碼,讓它成爲其餘模塊以來的包,這個包可使用maven打成jar包。而後拆分其餘的模塊,能夠有順序依賴,可是不能交叉依賴。
  2. 多個模塊都有前臺代碼,前臺代碼在maven打包是不須要編譯,是直接copy到target目錄,而後再打成war包。這樣咱們就能夠把全部模塊的前臺代碼都抽離出來,當成一個單獨的module,如project-web模塊,固然也能夠不抽離,可是須要用到第三步。
  3. 使用maven插件能夠作到war、jar一塊兒打。插件名字是maven-jar-plugin。示例pom配置以下(在pom.xml開頭中指定打包類型是war):
    <build>        <plugins>        <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-jar-plugin</artifactId>        <executions>        <execution>        <id>make-a-jar</id>        <phase>compile</phase>        <goals>        <goal>jar</goal>        </goals>        </execution>        </executions>        </plugin>        </plugins>        </build>

執行mvn install就能夠獲得war和jar包,默認是在target文件夾下。 web

介紹就這些,下面是示例的pom配置,首先parent中的pom.xml(注意parent的打包類型是pom):

<groupId>com.yeetrack.project</groupId>    <artifactId>project-parent</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>pom</packaging>    <name>My Maven Webapp</name>    <modules>    <module>common</module>    <module>module-one</module>    <module>module-two</module>    <module>module-three</module>    </modules>

在各個模塊中配置parent項目(下面是module-one):

<groupId>com.yeetrack.project</groupId>    <artifactId>module-one</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>jar</packaging>/* 若是此模塊有前臺代碼,那就是war */    <name>module-one</name>    <parent>    <groupId>com.yeetrack.project</groupId>    <artifactId>project-parent</artifactId>    <version>1.0-SNAPSHOT</version>    </parent>

若是module two依賴module one,有兩種狀況:

繼續閱讀→

相關文章
相關標籤/搜索