2020-03-23开始记录
springboot打war包
参考:https://blog.youkuaiyun.com/qq_33512843/article/details/80951741
1、修改pom.xml文件将默认的jar方式改为war:
<groupId>com.example</groupId>
<artifactId>application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--默认为jar方式-->
<!--<packaging>jar</packaging>-->
<!--改为war方式-->
<packaging>war</packaging>
2、排除内置的Tomcat容器
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--移除logback,使用log4j2作为日志组件-->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<!-- 移除嵌入式tomcat插件 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
注意:改成log4j2是因为我用原来的log4j在我本地没有问题,但在服务器中,就报log4j2.xml不存在,启动失败。原因是服务器中已经有一个springboot项目,改成了log4j2,影响到了这个项目。
application-dev.yml加上
log4j2的配置文件:https://download.youkuaiyun.com/download/dimandsun/12270395
logging:
#指定日志配置文件
config: classpath:config/log4j2/log4j2-test.xml
log4j2配置文件在附件
3、新增加一个类继承SpringBootServletInitializer实现configure:
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//此处的Application.class为带有@SpringBootApplication注解的启动类
return builder.sources(Application.class);
}
}
4、包名称:不需要加后缀.war
<build>
<finalName>zk_bathhouse_api</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!-- 这里是启动类App的位置 -->
<mainClass>com.example.restdemo.RestdemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!-- 没有web.xml 配置的话, 配置为false-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
5、maven打包:
mvn clean package -Dmaven.test.skip=true
6、
打包失败: 找不到javax.servlet.ServletException的类文件
加servlet依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
7、需要把前端资源路径配置一下,不然会无法访问静态资源及前端页面
maven 打包失败:
Cannot create resource output directory: E:\work\project\czy\zk_bathhouse_api\target\classes
解决:进程被占用,手动用360强力删除此目录