maven的pom.xml中profiles的作用是什么
maven的pom.xml中profiles的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1、profiles是什么?有什么作用
在maven构建的项目都存在一个pom.xml的项目对象模型配置文件,用于约束项目(如:jar包管理、构建管理等)。profiles是pom.xml中的一个配置项。
我们在开发项目时一般都会区分线上环境和测试环境,这两个环境需要切换以适应不同的环境需求
正式环境的配置,一般放置于class="lazy" data-src/main/resources下,而测试环境放置于/class="lazy" data-src/test/resources下面。
profile的主要作用就是区分正式环境和测试环境的配置
2、如何配置
<profiles> <profile> <id>release</id> <build> <resources> <resource> <directory>class="lazy" data-src/main/resources</directory> <includes> <include>***.xml</include> </includes> <excludes> <exclude>log4j.xml</exclude> </excludes> </resource> </resources> </build><activation> <activeByDefault>true</activeByDefault> </activation> </profile></profiles>
如上, 我配置了两个profile一个release用于正式环境发布,test用于测试环境使用;默认开启测试环境,activation->true
测试环境与正式环境只是部分的配置不同,我们需要公用这部分配置。这就使用到了includes and excludes,用引入和排除配置文件
3、区别构建发布包
构建测试包:
maven package -P test -Dmaven.test.skip=true
构建正式包:
maven package -P release -Dmaven.test.skip=true
maven多环境profiles参数切换
在实际开发项目中,常常有几种环境,一般情况下最少有三种环境:开发、测试、正式,各个环境之间的参数也各不相同,
于是在环境切换时我们需要修改为各环境需要的参数,就此我们可以通过maven的配置在切换环境是简化这一步骤.
项目结构图
class="lazy" data-src/main/resources/dev 目录是开发环境的配置项目
class="lazy" data-src/main/resources/test 目录是测试环境的配置项目
在pom.xml定义环境的profile
<profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><project.active>dev</project.active></properties></profile><profile><id>test</id><properties><project.active>test</project.active></properties></profile></profiles>
activeByDefault标签的值为true的话表示为默认的profile,使用mvn install命令起作用的就是默认的 profiles.activation为我们配置激活的profile
<build><finalName>SpringMVC_Spring_Mybatis</finalName><resources><resource><directory>${basedir}/class="lazy" data-src/main/resources</directory><includes><include>message.properties</include><include>${project.active}**</exclude></excludes></resource></resources><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><uriEncoding>UTF-8</uriEncoding><path>/</path><port>8088</port></configuration></plugin></plugins></build>
在工程的${basedir}/class="lazy" data-src/main/resource,目录下(basedir指的是pom文件所在的目录)
<include>与<exclude>是用来圈定和排除某一文件目录下的文件是否是工程资源的,<include>中指定的为资源文件,其它的都不是,<exclude>中指定的除了这些都为资源文件,如果<include>与<exclude>划定的范围存在冲突时,以<exclude>划定的范围为准,当<include>与<exclude>指定了相同的文件时,它们是不会被排除的,如message.properties同时被<include>与<exclude>指定,但它们还是会被编译.
输入maven指令
mvn clean install -P test
编译结果如下图,只编译test环境需要的配置-P后面的test为我们所要激活的profile
看完上述内容,你们掌握maven的pom.xml中profiles的作用是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341