第一种 打war包 外部tomcat运行,springboot项目需要在外部Tomcat 9 下运行
因为Springboot项目是靠main程序启动,所以在外部tomcat启动时,要去掉内置的tomcat
在pom.xml 移除tomcat
<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>
第二步:编写tomcat启动的入口工程 因为springboot是main启动 tomcat不知道
我是在启动类包下面见得类
public class StartTomcat extends SpringBootServletInitializer{
//覆盖方法名称
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//调用builder构造方法,完成当前的方法指向main方法过程
return builder.sources(SpringbootStart.class);
}
}
第二种方式 直接在jdk环境下运行war包(运行环境和编译环境版本 大版本一致)
java -jar **.jar/**.war可以在jdk环境运行一个jar包或者war包,必须在包中配置main方法所在的类路径;
利用springboot-maven的插件,在maven install的时候将main方法所在启动类放到配置文件中
不放置的话会报没有主清单属性,就是说没有指定main方法的位置
<build>
<!-- 打包时的文件名称 -->
<finalName>Springboot-war</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
添加之后打war包
运行 java -jar 名字.war 因为现在运行的是一个独立的springboot项目所以可以用java -jar 启动
两种方式启动没有绝对行,jdk启动比较简单