springboot maven按不同配置打包

项目场景:

项目场景:由于有正式服和测试服的不同环境,每次打包的时候都得先改一下配置文件的spring.profiles.active然后再打包,很麻烦。而且项目是一键部署的,还得每次都提交一下代码,很不方便,经过一系列资料查询解决了这个问题。

解决方案:

不废话,直接上代码:

配置文件结构:
在这里插入图片描述

pom核心代码:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>xxxx.xxxxx</groupId>
    <artifactId>xxxx</artifactId>
    <version>0.0.1-xxxx</version>
    <name>xxxx</name>

	//默认启动test配置文件
    <properties>
        <java.version>1.8</java.version>
        <profile.env>test</profile.env>
    </properties>
	//配置两个环境,对应两个application-test.properties和application-live.properties
    <profiles>
        <profile>
            <id>test</id>
            <properties>
                <profile.env>test</profile.env>
            </properties>
        </profile>
        <profile>
            <id>live</id>
            <properties>
                <profile.env>live</profile.env>
            </properties>
        </profile>
    </profiles>

    <dependencies>

    
    <build>
    	//这是生成的包名
        <finalName>xxxxx-${profile.env}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

然后是application.properties
在这里插入图片描述
这几步做完之后,就可以按照pom文件里面指定的默认profile.env生成不同环境下的包名了。
在这里插入图片描述
可能大家会疑惑,这样做每次打包还不是都要修改pom文件里面的profile.env
目前确实是这样,但是还剩一步操作!

那就是在服务器上拉取代码并且打包的时候执行以下代码,添加-Ptest参数

命令如下:

mvn clean package -Dmaven.test.skip=true -Ptest

加到一键部署脚本里面后直接一键启动就可以了。

最后再附上一键部署的Linux脚本代码:

#源代码路径
FilePath="/root/java/ouhaigo_test/ohgo_api"
#jar包启动路径
RunPath="/root/java/ouhaigo_test"
#jar包名称
PName=ouhaigo-test.jar

echo "===========进入项目目录============="
cd ${FilePath}

echo "==================git fetch======================"
git fetch origin master

echo "==================git pull======================"
git pull origin master


echo "===========编译并跳过单元测试===================="
mvn clean package -Dmaven.test.skip=true -Ptest


PID=$(ps -ef|grep ${PName} |grep -v grep|awk '{print $2}')
if [ -z $PID ]; then
        echo "${PName}  not exist"
else
    	echo "old ${PName} pid: $PID"
        kill ${PID}
        echo "old ${PName}  be killed"
fi
echo"=============启动=============="
nohup java -jar ${FilePath}/target/${PName} &
echo "$(ps -ef|grep ${PName})"
echo "Done check ps -ef|grep ${PName}"

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页