今天在公司打包部署SOA架構的項目。可是一直出現打包錯誤問題。如今記錄下來css
一、項目結構錯誤java
原先的項目結構是:web
parent Maven項目中聚合了三個maven子模塊spring
原先:parenttomcat
--commonspringboot
--manager架構
--pojomaven
--interfacespring-boot
--dao工具
--service
manager-web
其中common maven模塊中是公共工具類。manager是一個聚合Maven.其中包括pojo 模塊、interface模塊、dao模塊、service模塊。manager-web 模塊 是controller和靜態文件(包括HTML、js、css等)
並且Maven打包插件是在父級中,即parent中。使用的是
spring-boot-maven-plugin:是須要有main方法才能夠進行打包。不然就會報錯。異常信息就是缺乏main方法
由於spring-boot-maven-plugin是在parent中。因此對於繼承該項目的子項目。相對應的也使用了該插件。可是對於common子模塊。和manager模塊中的pojo、interface、dao都沒有定義打包方式。因此在打包這些模塊的時候就會報錯
因此又對項目進行改造:
將common模塊、manager模塊、manager-web模塊從parent中抽離出來。使這三個和parent同級。也就是parent不對這三個進行聚合。parent只對jar版本進行管理。
抽離出來後的項目結構
parent中不在包含子模塊。再定義打包方式。對於沒有main方法的模塊進行正常的maven打包。
使用tomcat7-maven-plugin進行打包
存在main方法的使用
對於manager-web項目有一點須要注意
由於項目不是先後臺分離。因此web中包含靜態文件。須要使用maven-resources-plugin進行資源文件拷貝。這樣在web模塊的包時。靜態資源文件也會打包進去。不然會出現Error resolving template [index], template might not exist的異常
最後再說一下打包順序:
一、對parent進行打包使用Run AS -->Maven install
二、對common模塊進行打包使用Run AS -->Maven install
三、對manager模塊進行打包使用Run AS -->Maven install
四、對manager-web模塊進行打包使用Run AS -->Maven install
由於我使用的是springboot 因此pom文件中定義的都是jar。
打完jar包後。只須要將service和web兩個jar包拉出來啓動就行了。使用java -jar jar名稱或者建立一個.bat文件
java -jar jiyunbang-manager-web-0.0.1-SNAPSHOT.jar
pause
使用技術:springboot、dubbo、zookeeper、shiro、druid、thymeleaf