springboot项目因为其有内嵌得tomcat(还包括 jetty等)所以打包得时候要排除内置得tomcat
具体步骤
1.pom.xml文件中添加打包格式:
在project标签下添加
<packaging>war</packaging>
2.排除内置tomcat 或者设置成provider
1>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3.修改springboot项目得启动类
@SpringBootApplication
public class XxlJobAdminApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(XxlJobAdminApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(XxlJobAdminApplication.class);
}
4.因为springboot项目打包不需要web.xml所以,打包得时候需要在pom里面进行声明,添加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
重点来了:
如果此时项目还是不能打成war包或者一直是jar的话,还是可以尝试下面的方法。
在idea的主界面点击Build -> build artifacts -> 选择你所需要的war包文件(这里一般会有两个分别是 war 跟 exploded,如果没有的话,那就是你tomcat还没有部署好,建议先部署tomcat,在tomcat配置主界面点击deployment-> + 选择项目war包即可。),此时可以就可以看到在你项目目录下target,会有相应的war存在。
5.部署得话,直接放在tomcat目录下得webapp下,启动tomcat即可,访问得时候需要添加上war包得名称
例如:http://xxx:8080/war包名称