1.profile可以干什么
一个Profile可以覆盖项目构件的最终名称,项目依赖,插件配置以影响构建行为。Profile还可以覆盖分发配置;例如,如果你通过一个staging profile发布一个构件到staging服务器上,你就可以创建一个profile然后在里面定义distributionManagement元素。
总之,profile可以覆盖POM中定义的的任何东西,因些profile一般放在配置文件的最下方。
2.激活profile
    (1)命令行激活
    mvn clean install -Pproduction -X (production为profile的ID, -X是指以调试的方式输出)
   (2)条件激活
[html]  view plain copy
  1.   
  2.       
  3.         jdk16  
  4.           
  5.             1.6  
  6.           
  7.           
  8.             simple-script  
  9.           
  10.       
  11.   
如果你在Java 1.6下运行mvn install,你会看到Maven下行到simple-script子目录构建simple-script项目。如果你在Java 1.5上运行mvn install,Maven就不会去构建simple-script子模块.
激活配置元素下可以包含一个或者多个选择器:包含JDK版本,操作系统参数,文件,以及属性。当所有标准都被满足的时候一个profile才会被激活。例如,一个profile可以要求操作系统家族为Windoes,JDK版本为1.4,那么该profile只有当构建在Windows机器上的Java 1.4上运行的时候才会被激活。如果该profile被激活,那么它定义的所有配置都会覆盖原来POM中对应层次的元素,就像使用命令行参数-P引入该profile一样。下面的例子展示了一个profile,它通过一个十分复杂的配置组合激活,包括操作系统参数,属性,以及JDK版本。
[html]  view plain copy
  1.   
  2.     ...  
  3.       
  4.           
  5.             dev  
  6.               
  7.                 false  
  8.                 1.5  
  9.                   
  10.                     Windows XP  
  11.                     Windows  
  12.                     x86  
  13.                     5.1.2600  
  14.                   
  15.                   
  16.                     mavenVersion  
  17.                     2.0.5  
  18.                   
  19.                   
  20.                     file2.properties  
  21.                     file1.properties  
  22.                   
  23.               
  24.     ...  
  25.           
  26.       
  27.   
通过属性缺失来激活profile
[html]  view plain copy
  1.   
  2.     ...  
  3.       
  4.           
  5.             development  
  6.               
  7.                   
  8.                     !environment.type  
  9.                   
  10.               
  11.           
  12.       
  13.   
3.profile的作用范围
级别:项目级别(配置在POM.xml中或者单独提出来作为一个profile.xml) setting(用户级别和系统级别)
Maven profile可以通过pom.xml,profiles.xml,~/.m2/settings.xml,或者/usr/local/maven/conf/settings.xml定义。
定义激活的Settings Profile
[html]  view plain copy
  1.   
  2.     ...  
  3.       
  4.         dev  
  5.       
  6.   
该设置只会激活settings profile,不会激活id匹配的项目profile。例如,如果你有一个项目,在pom.xml中定义了一个id为dev的profile,那个profile不会受你settings.xml中activeProfile设置的影响。activeProfile设置只对你settings.xml文件中定义的profile有效。
4.列出所有激活的profile,以及它们在哪里定义
$ mvn help:active-profiles