springboot war包部署 和jar包部署
文章目录
- war包部署
- 设置打包方式为war
- 排除内嵌的tomcat
- 在插件中指定入口类
- 打包测试
- jar包部署
- 设置打包方式
- 执行打包
- 测试访问
- 修改插件版本
- 指定jsp打包配置
- 重新打包测试
war包部署
设置打包方式为war
执行项目打包的方式为 "war" 默认创建springboot项目打包都是jar
修改项目pom.xml:
<packaging>war<packaging>
排除内嵌的tomcat
在依赖中加入provided,打包不参与
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!--去掉内嵌tomcat-->
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope> <!--去掉使用内嵌tomcat解析jsp-->
</dependency>
在插件中指定入口类
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--配置springboot入口类-->
<configuration>
<fork>true</fork>
<!--增加jvm参数-->
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<!--指定入口类-->
<mainClass>com.demo.SpringbootTest5Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>
还要修改入口类
//SpringBootServletInitializer 不再使用内嵌的容器启动,使用外部的tomcat容器启动
@SpringBootApplication
public class SpringbootTest5Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringbootTest5Application.class, args);
}
//配置入口类是谁
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootTest5Application.class);
}
}
打包测试
部署到本地的tomcat。进行测试
测试结果
jar包部署
设置打包方式
**<packaging>jar</packaging>**
执行打包
测试访问
java -jar 对应jar文件名字 nohup &
然后测试访问
发现出现了404,其实是springboot对jsp模版支持不友好,使用jsp模版部署,jar部署无法找到jsp页面。如何解决呢?请看以下解决方案:
修改插件版本
<plugins>
<!--版本必须为1.4.2版本-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
</plugin>
</plugins>
指定jsp打包配置
<resources>
<!-- 打包时将jsp文件拷贝到META-INF目录下-->
<resource>
<!-- 指定resources插件处理哪个目录下的资源文件 -->
<directory>src/main/webapp</directory>
<!--指定必须要放在此目录下才能被访问到-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
重新打包测试