java war包合并,使用maven warpath插件合并多module的war包
查看原文:http://www.yeetrack.com/?p=899
現在java
項目一般使用maven、gradle等工具來管理jar包、打包、發布。如果一個項目有很多模塊,那般是分成多個module,主目錄有個parent,負責包含全部的module,然后目錄中多個module文件夾,分別依賴parent或者其他module。最近有個項目,項目很久,代碼全部放在一起,隨著業務拓展變得與越來越龐大,于是其對進行module拆分。
問題
多個模塊可能交叉依賴。
每個模塊可能都會有前臺頁面的代碼,jsp、js等。
maven打包的時候能否war包、jar包一起打。
解決方式
交叉依賴必須解決,盡可能多的剝離獨立代碼,讓它成為其他模塊以來的包,這個包可以使用maven打成jar包。然后拆分其他的模塊,可以有順序依賴,但是不能交叉依賴。
多個模塊都有前臺代碼,前臺代碼在maven打包是不需要編譯,是直接copy到target目錄,然后再打成war包。這樣我們就可以把所有模塊的前臺代碼都抽離出來,當成一個單獨的module,如project-web模塊,當然也可以不抽離,但是需要用到第三步。
使用maven插件可以做到war、jar一起打。插件名字是maven-jar-plugin。示例pom配置如下(在pom.xml開頭中指定打包類型是war):
org.apache.maven.plugins
maven-jar-plugin
make-a-jar
compile
jar
執行mvn install就可以得到war和jar包,默認是在target文件夾下。
介紹就這些,下面是示例的pom配置,首先parent中的pom.xml(注意parent的打包類型是pom):
com.yeetrack.project
project-parent
1.0-SNAPSHOT
pom
My Maven Webapp
common
module-one
module-two
module-three
在各個模塊中配置parent項目(下面是module-one):
com.yeetrack.project
module-one
1.0-SNAPSHOT
jar
module-one
com.yeetrack.project
project-parent
1.0-SNAPSHOT
如果module two依賴module one,有兩種情況:
module-one打jar包(此module沒有前臺代碼)
mvn
install后,就可以將該模塊打成jar包,然后安裝到本地maven倉庫,module-two就可以直接依賴,添加dependency即可。
module-two打war、jar同時打(此模塊有前臺代碼)
同時打war、jar方法,去看上面的第三步,打出war、jar包后。maven將module-one的war包安裝到本地倉庫,將jar包放在它的target文件夾中。這樣module需要依賴jar包,也需要war包(合并到自己的war中)。首先看依賴jar的dependency:
com.yeetrack.project
module-one
1.0-SNAPSHOT
jar
system
${project.basedir}/../module-one/target/module-one-1.0-SNAPSHOT.jar
再看依賴war的情況(兩個依賴,一個都不能少):
com.yeetrack.project
module-one
1.0-SNAPSHOT
war
com.yeetrack.project
module-one
1.0-SNAPSHOT
warpath
OK,這是依賴的配置,下面是打包的配置,既然它都依賴其他的war了,那么它的打包類型也就是war。其實就是在使用maven-war-plugin的基礎上添加一個maven-warpath-plugin:
org.apache.maven.plugins
maven-war-plugin
WEB-INF/lib
true
add-classes
Over,最后打包的時候,在parent中執行mvn install即可。
總結
以上是生活随笔為你收集整理的java war包合并,使用maven warpath插件合并多module的war包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取新闻网站标题_pytho
- 下一篇: windows和linux命令的区别,l