首先简单介绍下 Maven 的 profile 是什么。对于人来说,profile 是指人的肖像,轮廓,比如论坛里每个人注册了帐号后,可以设置自己的 profile,放上照片,介绍等等。对于 Maven 来说又是怎样呢?整个项目定义好了项目对象模型(POM),就像论坛为每个人提供了默认的行为功能,如果我想改变我机器上的 POM 呢?这时就可以使用 profile。下面举个例子:

Xml代码  
  1. <profiles>
  2. <profile>
  3. <id>jdk16</id>
  4. <activation>
  5. <jdk>1.6</jdk>
  6. </activation>
  7. <modules>
  8. <module>simple-script</module>
  9. </modules>
  10. </profile>
  11. </profiles>
  <profiles><profile><id>jdk16</id><activation><jdk>1.6</jdk></activation><modules><module>simple-script</module></modules></profile></profiles>

这个 profile 的意思是,当机器上的 JDK 为1.6的时候,构建 simple-script 这个子模块,如果是1.5或者1.4,那就不构建,这个 profile 是由环境自动激活的。

我们需要在合适的地方使用合适的 profile ,并且在合适的时候用合适的方式将其激活,你不能在构建服务器上激活非公共的 profile,你也不能要求开发人员写很复杂的命令来使用常规的 profile。因此这里介绍一下几种 profile 的激活方式。

1. 根据环境自动激活。

如前一个例子,当 JDK 为1.6的时候,Maven 就会自动构建 simple-script 模块。除了 JDK 之外,我们还可以根据操作系统参数和 Maven 属性等来自动激活 profile,如:

Xml代码  
  1. <profile>
  2. <id>dev</id>
  3. <activation>
  4. <activeByDefault>false</activeByDefault>
  5. <jdk>1.5</jdk>
  6. <os>
  7. <name>Windows XP</name>
  8. <family>Windows</family>
  9. <arch>x86</arch>
  10. <version>5.1.2600</version>
  11. </os>
  12. <property>
  13. <name>mavenVersion</name>
  14. <value>2.0.5</value>
  15. </property>
  16. <file>
  17. <exists>file2.properties</exists>
  18. <missing>file1.properties</missing>
  19. </file>
  20. </activation>
  21. ...
  22. </profile>
    <profile><id>dev</id><activation><activeByDefault>false</activeByDefault><jdk>1.5</jdk><os><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os><property><name>mavenVersion</name><value>2.0.5</value></property><file><exists>file2.properties</exists><missing>file1.properties</missing></file></activation>...</profile>

2. 通过命令行参数激活。

这是最直接和最简单的方式,比如你定义了一个名为 myProfile 的 profile,你只需要在命令行输入 mvn clean install -Pmyprofile 就能将其激活,这种方式的好处很明显,但是有一个很大的弊端,当 profile 比较多的时候,在命令行输入这写 -P 参数会让人觉得厌烦,所以,如果你一直用这种方式,觉得厌烦了,可以考虑使用其它自动激活的方式。

3. 配置默认自动激活。

方法很简单,在配置 profile 的时候加上一条属性就可以了,如:

Xml代码  
  1. <profile>
  2. <id>dev</id>
  3. <activation>
  4. <activeByDefault>true</activeByDefault>
  5. </activation>
  6. ...
  7. </profile>
    <profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation>...</profile>

在一个特殊的环境下,配置默认自动激活的 profile 覆盖默认的 POM 配置,非常简单有效。

4. 配置 settings.xml 文件 profile 激活。

settings.xml 文件可以在 ~/.m2 目录下,为某个用户的自定义行为服务,也可以在 M2_HOME/conf 目录下,为整台机器的所有用户服务。而前者的配置会覆盖后者。同理,由 settings.xml 激活的 profile 意在为用户或者整个机器提供特定环境配置,比如,你可以在某台机器上配置一个指向本地数据库 URL 的 profile,然后使用该机器的 settings.xml 激活它。激活方式如下:

Xml代码  
  1. <settings>
  2. ...
  3. <activeProfiles>
  4. <activeProfile>local_db</activeProfile>
  5. </activeProfiles>
  6. </settings>
<settings>...<activeProfiles><activeProfile>local_db</activeProfile></activeProfiles>
</settings>

Maven 提供的 profile 功能非常强大和灵活,用得好的话,可以有效的隔离很多特殊的配置,使得整个项目能在不同环境中顺利的构建。但是,强大和灵活带来得问题是相对难掌握,希望本文能对 Maven 使用者有帮助。

来源:http://juvenshun.iteye.com/blog/208714

来自为知笔记(Wiz)

激活Maven profile的几种方式相关推荐

  1. Maven profile配置管理及激活profile的几种方式(非常非常详细)

    目录 前沿: 针对不同环境的 profile 的配置 激活 profile 配置方式 1. 命令行激活 2. Settings 文件显示激活 3. 系统属性激活 4. 操作系统环境激活 5. 文件存在 ...

  2. 在eclipse激活maven profile配置

    profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同 ...

  3. maven生成war包的两种方式

    war包即对WEB应用程序进行打包,用于应用容器的部署.如在jboss中只要把war包丢入deploy目录下即可发布自己的应用了.打包方式有很多中,很多工具本身就支持此功能.下面主要介绍通过maven ...

  4. 配置文件占位符||Profile——1、多Profile文件 2、yml支持多文档块方式 3、激活指定profile

    配置文件占位符 1.随机数 2.占位符获取之前配置的值,如果没有可以是用:指定默认值 Profile 1.多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{pr ...

  5. maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...

  6. 5.Maven和Eclipse整合(两种方式进行插件的安装),Maven相关设置,Eclipse下创建Maven项目

     1  第一种方式是:在连网的情况下,通过在helpàInstall下安装. 新的地址是:http://download.eclipse.org/technology/m2e/releases 2 ...

  7. maven引用公共包_maven怎么 引入(或引用/使用) 自定义(或本地/第三方) jar的三种方式 图文教程-Fun言...

    准备工作: jar包里的源码是: public class RegexUtils { /** * 验证Email * @param email email地址,格式:zhangsan@zuidaima ...

  8. Maven项目依赖外部jar进行打包的两种方式

    项目中除了pom.xml依赖之外,有时还依赖了其他jar包,如图: 依赖的方式如下: 点击Project Structure进行项目设置,在Modules中Dependencies标签中点击+号 添加 ...

  9. maven打包三种方式

    方法一:cmd 控制台打包(比较不推荐) 首先安装maven插件百度下载一个,配置环境变量什么的~在cmd控制台能mvn version能有数据出现. 打包只需要到项目的根目录下~在cmd敲入mvn ...

最新文章

  1. linux免密登录_Linux SSH免密钥登录总结
  2. Visual Studio 2008 Shell(翻译)
  3. bootstrap里col-xs , col-sm ,col-md,col-lg的区别
  4. 今日恐慌与贪婪指数为61 贪婪程度有所缓解
  5. 什么是事务的传播特性?(转载)
  6. C/C++[codeup 1942]进制转换
  7. 一页纸商业计划书 (Business Plan) 模板(转载)
  8. 获取Linux服务器公网和内网IP地址
  9. Android之APP跳转权限设置界面
  10. MFC之菜单栏的相关使用14
  11. Hololens2项目基础开发
  12. Echarts中国地图各省份区域设置不同的颜色
  13. Application Loader上传成功了 iTunes Connect不显示构建版本
  14. 《他是谁》爆火,优酷的成功并非偶然
  15. Zamzar - 免费在线文件格式转换器
  16. 齐家坪水电站施工组织设计(lunwen+任务书+外文翻译+cad图纸)
  17. 小白入门炒股票关键词解释及细节注意事项
  18. 正则表达式:只能输入以字母开头,数字或者字母结尾,并由数字、字母、下划线组成的字符串,且字符串中必须包含下划线!
  19. Linux网络编程之sockaddr与sockaddr_in,sockaddr_un分析
  20. proxy_cache_path命令之levels参数详解 - Nginx篇

热门文章

  1. oracle启用amm,oracle AMM、ASMM区别以及相关用法
  2. java int sum 0 i_【亲和数】 (Java代码)
  3. exchange服务器磁盘性能,如何解决Exchange磁盘空间问题
  4. mysql 读取oracle数据_Python中Pandas通过read_sql方法从Mysql或Oracle数据库中读取数据帧(DataFrame)...
  5. 2029.石子游戏 IX-LeetCode
  6. 单片机C语言稳压程序,51单片机的基于MC34063的5V稳压器的设计 -(原理图+程序)...
  7. 在php中实现时间戳,怎么在PHP中对时间戳进行转化
  8. redis thinkphp mysql_Thinkphp5怎么扩展Redis数据库,实现Redis的CURD操作
  9. 怎么不能锁门_学校规定宿舍不能锁门,声称方便检查卫生,你认为这合理吗?...
  10. swiper.js插件的使用