参考:https://blog.csdn.net/qq_33512843/article/details/80951741
项目:SpringBoot web项目能够在Eclipse正常执行,部署外部tomcat容器运行.以下是要修改的地方
pom.xml
<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>
<groupId>com.cl</groupId>
<artifactId>SpringBootJsp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- SpringBoot整合Web组件,整合SpringMvc,引入了传统SpringMvc所需的jar
原理是:maven的依赖传递,parent里整合了springmvc所需的jar, -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--parent里有版本信息,不用写 ,防止版本冲突-->
</dependency>
<!-- SpringBoot 支持lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 部署外部tomcat排除掉内置的tomcat -->
<scope>provided</scope>
</dependency>
<!-- SpringBoot 外部tomcat支持,整合jsp必须要 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- spring boot start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除自带的logback依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- springboot-log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<!-- 整合Aop技术 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
</project>
其中:一定要注意由于部署外部tomcat,所以按照参考里第2钟方式排除内部的tomcat;由于整合了jsp于是排除tomcat-embed-jasper包。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 部署外部tomcat排除掉内置的tomcat -->
<scope>provided</scope>
</dependency>
<!-- SpringBoot 外部tomcat支持,整合jsp必须要 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
项目入口:
@SpringBootApplication
@EnableAsync//开启异步调用
public class App extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(App.class);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);
}
}
然后进入项目的根目录,运行命令:mvn clean package
拷贝war包到tomcat9里,点击tomcat bin目录下startup.bat启动tomcat,然后访问对应tomcat的网址即可。
由于配置了application.yml,本地Eclipse发布原始的访问路径是:http://localhost:80/getMember
由于发布到tomcat application.yml的端口和访问路径配置不再起作用
新访问路径是:http://localhost:8080/SpringBootJsp-0.0.1-SNAPSHOT/getMember