赞
踩
@SpringBootApplication public class Seckill1Application extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(Seckill1Application.class, args); } //打成war包需要继承SpringBootServletInitializer并重写configure方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Seckill1Application.class); } /** * mvn打包后,如果运行容器容器不是tomcat(如果是tomcat则不用配,默认是tomcat),需要配置这里返回对应的EmbeddedServletContainerFactory * 比如使用jetty容器应该用下面的配置 * @return */ /*@Bean public EmbeddedServletContainerFactory servletContainer() { JettyEmbeddedServletContainerFactory factory = new JettyEmbeddedServletContainerFactory(); return factory; }*/ }
修改的部分:
1. <!-- 打包成war需要加入packaging标签并设置成war --> <packaging>war</packaging> 2. <!-- 由于要打成war,不会内嵌tomcat,所以修改继承过来的依赖spring-boot-starter-tomcat,加上provided,因为父依赖默认是compile:--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope><!-- 设置只在编译和测试的范围内有效,打包时不会加载该项。 --> </dependency> 3. <!-- 修改打包成war需要加入下面build标签整个 --> <build> <!-- 打成war的名字 --> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <!-- 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 --> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
完整pom文件:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>pers.lbw</groupId> <artifactId>seckill_1</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 打包成war就设置成war,打包成jar就设置成jar --> <packaging>war</packaging> <name>seckill_1</name> <description>一个关于秒杀的项目</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- mysql连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 参数校验依赖,JSR303 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- 由于要打成war,不会内嵌tomcat,所以修改继承过来的依赖spring-boot-starter-tomcat,加上provided,因为父依赖默认是compile:--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope><!-- 设置只在编译和测试的范围内有效,打包时不会加载该项。 --> </dependency> </dependencies> <!-- 修改打包成war需要加入下面build标签整个 --> <build> <!-- 用maven打成war/jar的包的文件名,这里是引用本项目的artifactId作为文件名 --> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <!-- 设置成false,否则检查web.xml是否存在。因为springboot是没有web.xml的 --> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <!-- 如果是用maven打成jar包的话把上面的插件换成这个 否则运行jar包时报错:no main manifest attribute --> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>
在项目根目录下(即包含pom.xml的目录),点击键盘的shift键加上鼠标右键,出现命令窗口,选择powershell命令,然后在命令行里输入: mvn clean package即可, 等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。
然后把target目录下的war包放到tomcat的webapps目录下,启动tomcat,切记页面中访问controller的路劲要加上项目名,才能正常访问,即可自动解压部署。 最后在浏览器中输入:
http://localhost:[端口号]/[打包项目名]/
注意:application.properties中的端口和contextPath配置不再生效了,而是使用tomcat的方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。