0%

maven环境配置

maven环境配置

在正常项目中一般都会有多个环境,而不同的环境一些配置和流程是不一样的,可以使用maven来进行环境的区分,取不同的配置,不过spring也是支持环境区分的,我一般还是习惯于用spring boot的环境配置

maven支持在settings.xml中配置,也支持在pom.xml中配置

pom.xml中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!--MAVEN打包选择运行环境-->
<!-- local(默认) 本地 dev:开发环境 test:测试环境 pro:生产环境-->
<profiles>
<profile>
<id>local</id>
<properties>
<profileActive>local</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<profileActive>prod</profileActive>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>

settings.xml配置

在settings.xml中也可以配置环境,将pom.xml中的profiles抽离出来,写在settings.xml中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<settings>
<profiles>
<profile>
<id>local</id>
<!-- 使用<activation>标签匹配激活,自动触发profile的条件逻辑
也可以手动指定环境 使用activeProfile标签
-->
<activation>
<!-- 是否默认激活 -->
<activeByDefault>false</activeByDefault>
<!--jdk版本1.8 -->
<jdk>1.8</jdk>
<!-- 操作系统 -->
<os>
<!--激活profile的操作系统的名字 -->
<name>macOS</name>
<!--激活profile的操作系统所属家族(如 'windows') -->
<family>macOS</family>
<!--激活profile的操作系统体系结构 -->
<arch>Catalina</arch>
<!--激活profile的操作系统版本 -->
<version>10.15.7</version>
</os>
<!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。
missing检查文件是否存在,如果不存在则激活profile。
exists则会检查文件是否存在,如果存在则激活profile。 -->
<file>
<!--如果指定的文件存在,则激活profile。 -->
<exists>${basedir}/dev.properties</exists>
<!--如果指定的文件不存在,则激活profile。 -->
<missing>${basedir}/pro.properties</missing>
</file>
<!--如果Maven检测到某一个属性(其值可以在POM中通过${name}引用),其拥有对应的name = 值,Profile就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->
<property>
<!--激活profile的属性的名称 -->
<name>projectVersion</name>
<!--激活profile的属性的值 -->
<value>0.0.1</value>
</property>
</activation>
<!-- 扩展属性列表,和pom.xml中properties类似 -->
<properties/>
<!-- 远程仓库列表 -->
<repositories>
<repository>
<id>apache.snapshots</id>
<name>Apache Development Snapshot Repository</name>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<releases>
<!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
<enabled>true</enabled>
<!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
<updatePolicy>daily</updatePolicy>
<!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 -->
<enabled>true</enabled>
<!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 -->
<updatePolicy>always</updatePolicy>
<!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 -->
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<!-- 插件仓库列表 -->
<pluginRepositories/>
</profile>
</profiles>
<!-- 手动指定环境 -->
<activeProfiles>
<activeProfile>profile-id</activeProfile>
</activeProfiles>
</settings>

激活方式

命令行激活

mvn命令使用-P来指定profile

1
2
# 使用test环境
mvn clean install -Ptest

settings激活

在上述settings.xml配置中也看到了,可以使用activeProfiles来指定激活的环境

1
2
3
4
<!-- 手动指定环境 -->
<activeProfiles>
<activeProfile>profile-id</activeProfile>
</activeProfiles>

条件判断激活

也是在settings.xml中配置activation,来根据系统属性判断是否激活

欢迎关注我的其它发布渠道