多个module项目打war包的方式

默认的打包方式为jar,如果要修改成war需要修改以下内容

1. root项目中,修改pom.xml文件中的打包方式为pom

<packaging>pom</packaging>

2.其他模块修改

多模块项目中,主启动类所在的模块是web模块,父模块是root模块,除了这两个模块之外,其余的模块修改pom.xml文件

<packaging>jar</packaging>

3.web模块修改 

修改打包方式 为war,并添加maven插件

<packaging>war</packaging>

<build>

<plugins>
   		<plugin>
   			<groupId>org.springframework.boot</groupId>
   			<artifactId>spring-boot-maven-plugin</artifactId>
   		</plugin>
   	</plugins>
   </build>
 

去除内置tomcat,如果想要在本地正常启动,可以增加tomcat,修改<scope>为provided,如果没有导入

spring-boot-starter-web依赖,可以查一下依赖树,看看是不是因为导入的其他依赖中内置了tomcat,排除即可,因为有的框架会使用自己整合的maven依赖,不一定都是
直接使用spring-boot-starter-web
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
          <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
          </exclusion>
      </exclusions>
  </dependency>


<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>
     <scope>provided</scope>
 </dependency>

修改主启动类,继承SpringBootServletInitializer并重写configure方法

@SpringBootApplication()public class DemoApplication  extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class);
    }
}

然后就可以打包了,IDEA的话 ,右侧栏可以进入maven界面,看到项目中的每个模块,选择root模块 或者web模块,在Lifecycle中选择package命令,双击,所需要的war包会在web模块下target目录中生成。

posted @ 2021-12-03 15:39  shashar  阅读(1122)  评论(0)    收藏  举报