使用maven打包spring-boot web工程

Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。

1、打包成jar:

Spring Boot 打成jar包要可以运行,必须使用Spring Boot提供的一个插件,不然打成的普通的jar是无法运行Spring Boot工程的,一般会提示 jar中没有主清单属性。 插件如下:

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

pom.xml中<packaging>jar</packaging>可以不指定,默认是jar。然后执行mvn package 就可以达成jar包,在服务器上输入:java -jar XXX.jar 即可运行。

注:上面的配置需要先在pom.xml中指定spring-boot的parent,如

<parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.5.RELEASE</version>
  </parent>

2、打包成war:

1)在 pom.xml 文件将 <packaging>jar</packaging> 改为 <packaging>war</packaging> 

2)加上build插件,表明此Web工程不需要web.xml文件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

3)排除 Spring Boot Tomcat 组件,scope 属性设为 provided

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

4)在 Application 即main方法类同包下创建实现外部 Web 容器启动的启动类 

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

public class WxServletInitializer extends SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(App.class);//App 为原main函数启动类
    }
}

这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,只不过在这里不需要编写额外的XML文件了。而这个类的位置和要Application.java在同一个目录下。

然后使用mvn package打成了war包。将war包放到tomcat的webapp下,启动tomcat,在浏览器上输入:

http://localhost:8080/Test-0.0.1-SNAPSHOT/test?name=abc

即可访问。

猜你喜欢

转载自blog.csdn.net/liuxiao723846/article/details/80426644