目录:
- 技术背景
- 实现方式
1.技术背景
项目的某个微服务实现了A、B、C三种相近的功能,所以代码在一个服务中,但是部署打包的时候想各自单独为service-a.jar,service-b.jar、service-c.jar。
服务注册到注册中心有各自的名称,每个功能的实现需要不同的配置,application-a.yml,application-b.yml,application-c.yml,需要激活不同的配置文件。日志写入
到不同的文件中,service-a.log、service-b.log、service-c.log。鉴于以上需要实现的技术为:
1.动态的应用名称:根据环境变量实现不同的应用名称
2.动态的配置文件:根据maven @profile.active@实现
3.动态的jar包名称:结合上一步实现修改名称
2.实现方式
2.1动态的应用名称
spring: application: #根据环境变量修改应用名称 all为默认的变量 name: aicloud-record-${PROFILE_ACTIVE:all}
本地启动可以在启动类配置中修改
在服务器环境中导出环境变量
export PROFILE_ACTIVE:aaa
2.动态的配置文件
配置文件
spring: profiles: active: @profile.active@
pom文件
<profiles> <profile> <id>all</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profile.active>all</profile.active> </properties> </profile> <profile> <id>asr</id> <properties> <profile.active>asr</profile.active> </properties> </profile> </profiles>
本地启动时,maven选中选项
服务器上
mvn clean install -Pall 。。。
3.动态的jar包名称
这一步是在上一步的基础上稍作修改就好
<build> <!--# 根据profile修改jar包名称 ${profile.active}--> <finalName>aicloud-record-biz-${profile.active}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins> </build>