Maven多模块工程打包成war
2017年11月06日 14:26:26 walton_an 阅读数:443
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36390175/article/details/78457293
对于Springboot中多模块的maven工程项目(一般是dao层是个maven工程,web层是个maven工程等等),然后一个总的maven工程的pom.xml添加子模块(示例如下:)
<modules>
<module>XXX1</module>
<module>XXX2</module>
<module>XXX3</module>
</modules>
对于这样的工程,
1、需要将总的maven工程进行pom打包
<packaging>pom</packaging>
2、web层进行war打包,添加spring-boot-maven-plugin插件
<packaging>war</packaging>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
3、其它层进行jar打包
<packaging>jar</packaging>
4、如果这样直接打包的话会报错,因为springboot内置了tomcat服务器,此时我们还需要修改总的mavel配置文件:
4.1、移除嵌入式tomcat插件(加入<exclusions></exclusions>标签的内容)
<dependencies> <dependency> <artifactId>spring-boot-starter-web</artifactId> <groupId>org.springframework.boot</groupId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> <!--<scope>provided</scope>--> </dependency>
4.2、加入tomcat 支持
<!-- 加入tomcat支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
4.3、将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法
public class SportsNbaApplication extends SpringBootServletInitializer{ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
5、打包:
5.1、在总目录下打包:进入命令行,切换到总工作目录(总pom.xml文件的目录下),使用以下命令打包
mvn clean install -Dmaven.test.skip=true
5.2、在web层目录打包:切换到web层目录,执行以下命令打包
mvn clean package -Dmaven.test.skip=true