1.修改pom.xml文件
<packaging>war</packaging>
<groupId>com</groupId>
<artifactId>example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>example</name>
<packaging>war</packaging>
<description>Demo project for Spring Boot</description>
增加外部tomcat启动
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.修改启动Application文件
继承SpringBootServletInitializer,实现configure方法
原来
@SpringBootApplication
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
修改
public class ExampleApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ExampleApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
3.打包
这里可以直接到项目根目录下面:运行 maven package命令,打包。
我这里直接使用idea打包,如下图:
在这打包过程中遇到的错误
错误描述
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project spring: There are test failures.
解决
在pom.xml增加以下代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--跳过项目运行测试用例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
完整
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--执行测试用例的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!--跳过项目运行测试用例-->
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
看网上还有另一种方法解决,这里也记录一下:
在test类上面添加 @Ignore注解
4.将war放入外部tomcat的webapps目录下
最后:就是启动tomcat,启动完成后,直接访问:(即:ip:端口/项目名称,这里的端口是外部tomcat配置的端口,项目名称是war包得名称)例如:localhost:8080/demo1
一定注意 :我这里访问的端口是8080,也就是外部tomcat设置的端口。而不是项目,
application.yml中配置的server.port。