大家好,欢迎来到IT知识分享网。
1.<profiles>与<profile>标签的功能作用
首先我们知道,pom中可以使用诸如<properties>、<dependencies>、<build>来定义项目所需要的属性、依赖、构建设置。
而我们的项目有时会有这样的需求:比如我们想在不同环境下(这里的不同环境可以是我们常说的dev、test、prod环境,也可以是操作系统、JDK版本,以及存不存在某些文件这些不同的环境),使用不同的属性、依赖、构建设置,那么我们就可以在<profile>标签中再写一套<properties>、<dependencies>、<build>等标签,来作为第二套项目所需要的属性、依赖、构建设置,而<profiles>中可以有多个<profile>标签,所以我们可以写多套项目所需要的属性、依赖、构建设置,注意,<profile>中只写与pom中默认的那套属性、依赖、构建设置不同的的设置。
综上所述,我们大致了解了<profile>标签中可以包含除了 modelVersion和坐标系标签外几乎所有的标签,下边我们来将两个<profile>独有的最重要的标签。
<profile> <id>profile_id001</id> <activation> <activeByDefault>true</activeByDefault> <file></file> <jdk></jdk> <os></os> <property></property> </activation> </profile>
这两个标签分别是<id>和<activation>。
<id>:该标签是用来标明该<profile>的唯一id,我们后边指定项目构建使用的<profile>就需要它。
<activation>:该标签是用来设定激活条件的,
2.案例测试
了解完<profile>标签的内容和<profile>标签的功能作用后,我们通过案例来学习如何使用<profile>标签,其实如何使用就是如何激活指定的<profile>,一种是通过上边讲的<activation>标签根据项目运行所在环境的一些参数来决定激活的<profile>,另一种是通过mvn执行构建命令时加上参数:-P<profile_id>来手动指定激活的<profile>。
2.1 通过mvn命令指定激活的<profile>
我们新建一个springboot项目,并在pom中添加<profiles>,其中包含三个<profile>,分别设置属性值<enviroment>为不同的值,而默认的<properties>中未设置<enviroment>属性。
接着我们在application.peoperties文件中引用这个<enviroment>属性,我们设置配置文件中的project.enviroment的值为pom文件中的<enviroment>属性,这里注意引用时要用占位符@,这里有个注意点,就是在maven工程中这个占位符可以是${xxx}与@xxx@,但是在springboot工程中只能使用@xxx@(xxx为自定义的属性名)。
然后我们执行编译命令mvn clean compile -Pdev,就可以看到生成的编译文件target中,application.peoperties文件中的project.enviromen的值不再是表达式,而是指定<profile>中的<enviroment>的值。
这里继续使用-P指定不同的<profile_id>,生成的application.peoperties文件中的project.enviromen的值就是是指定<profile>中的<enviroment>的值。
当我们不使用-P指定<profile>时,就会直接找<project>标签下的<properties>中的属性,这里我们没有这个属性,所以编译生成的project.enviromen的值就是原表达式。
2.2 通过<activation>标签中的子标签<activeByDefault>来指定默认<profile>
还是上边的那个springboot工程,我们在不使用-P指定<profile>时,就默认会找<project>标签下的<properties>中的属性,这里我们没有这个属性,但是当我们使用<activation>标签中的子标签<activeByDefault>时就会默认引用<activeByDefault>为true的<profile>。
这里我们在<id>为test的<profile>中添加<activeByDefault>为true,生成的application.peoperties文件中的project.enviromen的值就是默认的<enviroment>的值。
2.3 通过<activation>标签中的子标签<file>、<jdk>、<os>、<property>等子标签来激活
<file>:通过判断指定文件的存在或不存在来使用指定<profile>
<file> <exists></exists> <missing></missing> </file>
<jdk>:通过判断JDK版本来使用指定<profile>
<jdk></jdk>
<os>:通过判断当前操作系统参数来使用指定<profile>
<os> <version></version> <arch></arch> <family></family> <name></name> </os>
<property>:通过判断特定属性的值来使用指定<profile>
<property> <name></name> <value></value> </property>
这多个激活条件的关系是这样的:Maven 3.2.2之前是只要满足其中之一就可以激活该<profile>,Maven 3.2.2之后是满足所有才可以激活该<profile>。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158466.html