使用maven-resources-plugin配置不同环境,进行多环境打包
pom文件中引入maven-resources-plugin
<build>
<plugins>
<!-- 指定JDK编译版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打包跳过测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- 避免font文件的二进制文件格式压缩破坏 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
<nonFilteredFileExtension>eot</nonFilteredFileExtension>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>svg</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<!-- 覆盖原有文件 -->
<overwrite>true</overwrite>
<!-- 指定相对url的方式指定outputDirectory -->
<outputDirectory>target/classes</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
- 在项目src/main/resources目录下,按照环境名称建立配置文件目录
pom文件中加入相关设置
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
指定resources
<build>
<resources>
<resource>
<directory>src/main/resources/${env}</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.json</include>
<include>**/*.ftl</include>
<include>**/*.pem</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.txt</include>
<include>*.xml</include>
<include>*.txt</include>
</includes>
<!-- 此处排除这些包目的是只保留打包环境的配置文件 -->
<excludes>
<exclude>dev/*</exclude>
<exclude>test/*</exclude>
<exclude>prod/*</exclude>
</excludes>
</resource>
</resources>
</build>
到此,maven配置以及项目设置完成,可执行maven命令进行打包
打包命令
mvn clean package
mvn clean package -Pdev
mvn clean package -Ptest
mvn clean package -Pprod
执行命令,指定-P参数,启用指定的profile。
在jenkins中新建一个maven项目任务
进入任务详情,配置任务详情。
填写源码来源
设置build信息
构建成功后的脚本信息
shell脚本内容,根据项目实际情况修改
#!/bin/sh
echo "开始执行shell脚本"
# 在jenkins环境中一定要加这句话,否则这个脚本进程最后会被杀死
export BUILD_ID=dontKillMe
# 指定最后编译好的jar的存放位置
JAR_PATH=/opt/workspace/appserver
# 如果路径不存在,就创建路径
[ ! -e $JAR_PATH ] && mkdir -p $JAR_PATH
# 指定jenkins中存放编译好的jar的位置
JENKINS_JAR_PATH=/home/wenbo/jenkins/workspace/testProject/target
# 如果路径不存在,就创建路径
[ ! -e $JENKINS_JAR_PATH ] && mkdir -p $JENKINS_JAR_PATH
# 指定jenkins中存放编译好的jar的名称(这个jar的名字和pom文件配置有关)(appserver-0.0.4.jar需要替换成你自己的)
JENKINS_JAR_NAME=appserver-0.0.4.jar
# 获取该项目的进程号,用于重新部署项目前杀死进程(appserver需要替换成你自己的)
process_id=$(ps -ef | grep appserver | grep -v "grep" | awk '{print $2}')
# 如果该项目正在运行,就杀死项目进程
if [[ ! -z "$process_id" ]]
then
echo "停止服务"
kill -9 $process_id
else
echo "服务未启动"
fi
# 进入Jenkins中编译好的jar的位置
cd ${JENKINS_JAR_PATH}
# 将Jenkins中编译好的jar复制到最终存放项目jar的位置
cp $JENKINS_JAR_PATH/$JENKINS_JAR_NAME $JAR_PATH
# 进入到存放项目jar的位置
cd ${JAR_PATH}
# 后台启动项目,并且将控制台日志输出到nohup.out中
nohup java -jar ${JENKINS_JAR_NAME} --server.port=9000 -Dfile.encoding=UTF-8 >nohup.out &
echo "shell脚本执行完毕"
参考连接 https://www.cnblogs.com/grasp/p/12118684.html
参考连接 https://www.haowenbo.com/articles/2019/07/24/1563964257491.html