今天在公司打包部署SOA架构的项目。但是一直出现打包错误问题。现在记录下来
1、项目结构错误
原先的项目结构是:
parent Maven项目中聚合了三个maven子模块
原先:parent
--common
--manager
--pojo
--interface
--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的异常
最后再说一下打包顺序:
1、对parent进行打包使用Run AS -->Maven install
2、对common模块进行打包使用Run AS -->Maven install
3、对manager模块进行打包使用Run AS -->Maven install
4、对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