1、修改pom.xml文件
(1)增加一行,配置打包格式
<packaging>${project.packaging}</packaging>
(2)增加profiles特性(在war包格式发布时,需要去除jetty的依赖包),如果项目中有其他包中含有jetty,也需要一并去除。
<profiles>
<profile>
<id>jar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<project.packaging>jar</project.packaging>
</properties>
</profile>
<profile>
<id>war</id>
<properties>
<project.packaging>war</project.packaging>
</properties>
<dependencies>
<dependency>
<artifactId>crux-baseapp</artifactId>
<groupId>com.crux</groupId>
<version>1.0-war-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>
</profiles>
(3)引入servlet依赖
<!--引入servlet-->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
2. 增加ServletInitializer
在项目的Application启动类所在的package下增加如下文件,目的是初始化servlet以及jdbc驱动初始化。
在程序启动时,可能会遇到elasticsearch报错的问题,请联系相关开发同学处理。
@Slf4j
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
log.warn("can not load oracle.jdbc.OracleDriver");
}
return builder.sources(Application.class);
}
}
3. 项目构建
(1) 命令行方式
maven增加profile配置后,原有打jar包和docker镜像的方法不变,如果需要构建war包,使用如下命令:
mvn -U clean package -Pwar -Dmaven.test.skip=true
在构建前可以检查一下需要排除的jetty相关jar包是否排除干净
mvn dependency:tree
(2)IDEA 中直接构建
在maven条目的Profiles中勾选要打包的类型,直接点击package即可。
注意如果项目中有测试类,需要在pom文件夹中加入以下配置,排除test文件夹,或者直接使用命令行方式
<build>
<plugins>
<!--打包编译的时候排除test测试类-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>