Profile

帮助命令

  • 查看项目中哪些profile被激活了
mvn help:active-profiles
  • 列出当前所有profile
mvn help:all-profiles

maven属性

  • maven有6类属性,都可以直接在pom中使用,和profile没有关系,profile是为了灵活构建而产生的,也就是说通过profile为属性设置不同的值,并设置profile启用开关,当某个profile启用后,该profile中配置的属性或者插件信息都会在当前项目中起作用。
  • 下面是讲解profile种类和如何开启。想知道6类属性可以查看maven灵活构建

profile种类

  • 根据需求profile可以在以下位置中声明。在不同位置声明的profile中可以使用属性元素种类不一样。
    • pom.xml :当前项目生效
    • 用户settings.xml :用户目录 .m2/settings.xml,当前机器下该用户的所有项目有效
    • 全局settings.xml :conf/settings.xml当前机器上所有项目

开启资源过滤

资源文件过滤

  • 使用插件maven-resources-plugin
  • 对src/main/resources目录下文件开启过滤
<build>
     <resources>
            <resource>
                <directory>{project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
    <!-- 对sql资源文件关闭资源过滤-->
         <resource>
                <directory>{project.basedir}/src/main/sql</directory> 
                <filtering>false</filtering>
            </resource>
    </resources>
...
   <plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>${maven-resources-plugin.version}</version>
                <configuration>
                    <encoding>${project.encoding}</encoding>
                </configuration>
            </plugin>
    </plugins>
</build>

web资源文件过滤

  • 插件maven-war-plgin

激活profile6种方式

  • 定义在settings中的profile对所有项目有效,在pom中的只对当前项目有效
 <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
       <profile>
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
 <!--通过系统属性激活,当系统中存在某个属性或属性等于某个值时激活-->
        <profile>
            <id>prod</id>
           <activation>
                <property>
                    <name>server</name>
                    <value>x</value>
                </property>
            </activation>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
      <profile>
            <id>jdk1.6</id>
            <activation>
                <property>
                    <name>jdk1.6</name>
                </property>
            </activation>
            <properties>
                <java.version>1.6</java.version>
            </properties>
        </profile>
    </profiles>
    1. 命令行
      mvn -Pdev,test //激活dev、test profile
    1. 系统属性激活
    • 如果系统属性不存在可以通过mvn设置系统属性。(不是环境变量)
      mvn -Djdk1.6 -Dserver=x //激活prod、jdk1.6 profile
    • javap -v class类 可以查看编译后class文件的使用的jdk版本,本例中对应50
    • mvn help:system 查看系统属性和环境变量
    1. settings文件显示激活
    • 表示其配置的profile对所有的项目都处于激活状态。
  <profiles>
    <profile>
     .....
    <id>artifactory</id>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
    1. 操作系统环境激活
    1. 文件存在与否激活
<profiles>
        <profile>
            <id>dev</id>
            <activation>
             <file>
                   <missing>x.properties</missing>
                   <exists>y.properties</exists>
             </file>
            </activation>
            <properties>
                .....
            </properties>
        </profile>
<profiles>
    1. 默认激活
<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
<profiles>
  • 注:Pom中如果有任何 一个profile通过非“默认激活”方式激活了,那么所有默认激活的profile配置都会失效。

案例

  • 需求:项目中除了使用中央仓库的依赖还会用到公司私服上的依赖。想法:中央仓库依赖配置到阿里下载,公司的依赖配置到公司私服上下载。
  • 设计:在settings.xml中配置阿里镜像代理中央仓库的依赖。配置profile来满足公司自己依赖的下载。
<settings>
<mirrors>
     <!-- 代理central远程仓库 -->
     <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror> 
  </mirrors>

  <profiles>
     <profile>
      <repositories>
        <repository>
            <id> maven2 repository snapshots</id>
            <name> maven2 repository-snapshots</name>
            <url>公司私服地址</url>
        </repository>
        <repository>
            <id> maven2 repository releases</id>
            <name>maven2 repository-releases</name>
            <url>公司私服地址</url>
        </repository>
     
      </repositories>
      <pluginRepositories>
       
        <pluginRepository>
          <id> maven2 plugin repository releases</id>
          <name> maven2 repository-releases</name>
          <url>公司私服地址</url>
        </pluginRepository>
      </pluginRepositories>
      <id>artifactory</id>
    </profile>

  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>

</settings>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,726评论 6 342
  • 当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于刚开始接...
    清枫_小天阅读 5,772评论 1 13
  • 前言什么是 POMQuick Overview POM 常用元素 pom.xml 完整注释 参考 0 前言 什么是...
    seyvoue阅读 12,569评论 1 36
  • 文|在昔 黄昏,霞光在西边的天空聚拢,色彩斑斓,整座城市在夕阳的余晖下褶褶生光,显现出一派祥和的气息。此时,热浪有...
    在昔阅读 471评论 0 3