1. 程式人生 > >八、SpringBoot工程打成war包

八、SpringBoot工程打成war包

1、將pom.xml中預設的jar修改為war。

<packaging>war</packaging>

2、排除SpringBoot內建的Tomcat容器。

<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>

3、新增Tomcat依賴,用於編譯和測試。

<dependency>
   <groupId>org.springframework.boot</
groupId>   <artifactId>spring-boot-starter-tomcat</artifactId>   <!-- 該包只在編譯和測試的時候使用 --> <scope>provided</scope> </dependency>

4、繼承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,實現configure方法。

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 工程打成war需要繼承SpringBootServletInitializer,重寫configure方法 * @date 2018年12月7日 * @author zxp */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } }

5、注意

使用外部Tomcat部署訪問的時候,application.properties(或者application.yml)中配置的

server.port=

server.servlet.context-path=

將失效,請使用Tomcat的埠。

為了防止應用上下文所導致的專案訪問資源載入不到的問題,建議pom.xml檔案中<build></build>標籤下新增<finalName></finalName>標籤:

<build>
      <!-- 應與application.properties(或application.yml)中context-path保持一致 -->
    <finalName>war包名稱</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    <!-- 配置java版本-->
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
            <fork>true</fork>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

在專案目錄下(與pom.xml檔案同級),使用mvn命令打包,執行:

jar 方式打包,使用內建Tomcat:mvn clean install -Dmaven.test.skip=true

執行:java -jar 包名.jar

war方式打包,使用外接Tomcat:mvn clean package -Dmaven.test.skip=true

clean是清除之前的包,-Dmaven.test.skip=true是忽略測試程式碼