profile
主要是为了解决不同环境所需的不同变量、配置等问题.
profile 一般出现在两个地方:settings.xml,pom.xml
在 settings.xml 时,一般用来做仓库的选择(只使用 aliyun 仓库可以这样配置 settings.xml)
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 设置全局的 profile -->
<profiles>
<!-- nexus 仓库 -->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.1.73:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<url>http://192.168.1.73:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<!-- 阿里云仓库 -->
<profile>
<id>aliyun</id>
<repositories>
<repository>
<id>aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 默认激活的是阿里云仓库 -->
<activeProfiles>
<activeProfile>aliyun</activeProfile>
</activeProfiles>
</settings>
在 pom.xml 时,一般用来激活环境配置
<profiles>
<profile>
<id>daily</id>
<properties>
<env>daily</env>
</properties>
</profile>
<profile>
<id>prepub</id>
<properties>
<env>prepub</env>
</properties>
</profile>
<profile>
<id>publish</id>
<properties>
<env>publish</env>
</properties>
</profile>
<profile>
<id>sit</id>
<properties>
<env>sit</env>
</properties>
</profile>
<profile>
<id>prepub-qa</id>
<properties>
<env>prepub-qa</env>
</properties>
</profile>
<profile>
<id>prepub-backup1</id>
<properties>
<env>prepub-backup1</env>
</properties>
</profile>
<profile>
<id>prepub-backup2</id>
<properties>
<env>prepub-backup2</env>
</properties>
</profile>
<profile>
<id>prepub-verify</id>
<properties>
<env>prepub-verify</env>
</properties>
</profile>
<profile>
<id>qa</id>
<properties>
<env>qa</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
与profile打包时搭配使用的build 代码如下配置(结合application-${env}.properties文件使用)
<build>
<plugins>
<plugin>
<groupId>com.taobao.pandora</groupId>
<artifactId>pandora-boot-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 解压fat jar到target/${project-name}目录 -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<unzip
src="${project.build.directory}/${project.build.finalName}.${project.packaging}"
dest="${project.build.directory}/tn-workflow-tool" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- <plugin> <groupId>com.github.os72</groupId> <artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.0.0</version> <executions> <execution> <phase>generate-sources</phase>
<goals> <goal>run</goal> </goals> <configuration> <protocVersion>3.0.0</protocVersion>
<includeStdTypes>true</includeStdTypes> <inputDirectories> <include>src/main/resources/proto</include>
</inputDirectories> <outputTargets> <outputTarget> <outputDirectory>src/main/java</outputDirectory>
</outputTarget> </outputTargets> </configuration> </execution> </executions>
</plugin> -->
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>application-daily.properties</exclude>
<exclude>application-prepub.properties</exclude>
<exclude>application-publish.properties</exclude>
<exclude>application-qa.properties</exclude>
<exclude>application-sit.properties</exclude>
<exclude>native/libraw_linux.so</exclude>
<exclude>native/libraw_win64.dll</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!-- ${env}选择合适的环境 -->
<includes>
<include>application-${env}.properties</include>
<include>native/libraw_linux.so</include>
<include>native/libraw_win64.dll</include>
</includes>
</resource>
</resources>
</build>
application-${env}.properties 中的部分内容
application-prepub.properties 中 spring.profiles.active=prepub-qa
application-daily.properties 中 spring.profiles.active=daily
application.properties 中 spring.profiles.active=@env@