欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Maven簡介(三)——profile介紹

系統 2025 0

4 ?????? profile 介紹

4.1 ???? profile 簡介

profile 可以讓我們定義一系列的配置信息,然后指定其激活條件。這樣我們就可以定義多個 profile ,然后每個 profile 對應不同的激活條件和配置信息,從而達到不同環境使用不同配置信息的效果。比如說,我們可以通過 profile 定義在 jdk1.5 以上使用一套配置信息,在 jdk1.5 以下使用另外一套配置信息;或者有時候我們可以通過操作系統的不同來使用不同的配置信息,比如 windows 下是一套信息, linux 下又是另外一套信息,等等。具體的激活條件有哪些我在后文會講到。

4.2 ???? profile 的定義位置

對于使用 Maven3 ,我們可以有多個地方定義 profile 。定義的地方不同,它的作用范圍也不同。

(1) ??? 針對于特定項目的 profile 配置我們可以定義在該項目的 pom.xml 中。

(2) ??? 針對于特定用戶的 profile 配置,我們可以在用戶的 settings.xml 文件中定義 profile 。該文件在用戶家目錄下的“ .m2 ”目錄下。

(3) ??? 全局的 profile 配置。全局的 profile 是定義在 Maven 安裝目錄下的“ conf/settings.xml ”文件中的。

4.3 ???? profile 中能定義的信息

profile 中能夠定義的配置信息跟 profile 所處的位置是相關的。以下就分兩種情況來討論,一種是定義在 settings.xml 中,另一種是定義在 pom.xml 中。

4.3.1? profile定義在settings.xml中

profile 定義在 settings.xml 中時意味著該 profile 是全局的,它會對所有項目或者某一用戶的所有項目都產生作用。因為它是全局的,所以在 settings.xml 中只能定義一些相對而言范圍寬泛一點的配置信息,比如遠程倉庫等。而一些比較細致一點的需要根據項目的不同來定義的就需要定義在項目的 pom.xml 中。具體而言,能夠定義在 settings.xml 中的信息有 <repositories> <pluginRepositories> <properties> 。定義在 <properties> 里面的鍵值對可以在 pom.xml 中使用。

4.3.2? profile定義在pom.xml中

定義在 pom.xml 中的 profile 可以定義更多的信息。主要有以下這些:

l ? <repositories>

l ? <pluginRepositories>

l ? <dependencies>

l ? <plugins>

l ? <properties>

l ? <dependencyManagement>

l ? <distributionManagement>

l ? 還有 build 元素下面的子元素,主要包括:

<defaultGoal>

<resources>

<testResources>

<finalName>

4.4 ???? profile 的激活方式

Maven 給我們提供了多種不同的 profile 激活方式。比如我們可以使用 -P 參數顯示的激活一個 profile ,也可以根據環境條件的設置讓它自動激活等。下面將對它們一一進行介紹:

4.4.1? 使用activeByDefault設置激活

先看下面一個配置

       <profiles>
         <profile>
              <id>profileTest1</id>
              <properties>
                     <hello>world</hello>
              </properties>
              <activation>
                     <activeByDefault>true</activeByDefault>
              </activation>
         </profile>
         
         <profile>
              <id>profileTest2</id>
              <properties>
                     <hello>andy</hello>
              </properties>
         </profile>
  </profiles>


    

?

? ?????? 我們可以在 profile 中的 activation 元素中指定激活條件,當沒有指定條件,然后指定 activeByDefault true 的時候就表示當沒有指定其他 profile 為激活狀態時,該 profile 就默認會被激活。所以當我們調用 mvn package 的時候上面的 profileTest1 將會被激活,但是當我們使用 mvn package –P profileTest2 的時候將激活 profileTest2 ,而這個時候 profileTest1 將不會被激活。

4.4.2? 在settings.xml中使用activeProfiles指定處于激活狀態的profile

我們可以在 settings.xml 中使用 activeProfiles 來指定需要激活的 profile ,這種方式激活的 profile 將所有情況下都處于激活狀態。比如現在我們定義了如下兩個 profile

        <profiles>
         <profile>
              <id>profileTest1</id>
              <properties>
                     <hello>world</hello>
              </properties>
         </profile>
         
         <profile>
              <id>profileTest2</id>
              <properties>
                     <hello>andy</hello>
              </properties>
         </profile>
  </profiles>


    

?

?????? 這里的 profile 可以是定義在 settings.xml 中的,也可以是定義在 pom.xml 中的。這個時候如果我們需要指定 profileTest1 為激活狀態,那么我們就可以在 settings.xml 中定義 activeProfiles ,具體定義如下:

        <activeProfiles>
       <activeProfile>profileTest1</activeProfile>
  </activeProfiles>


    

?

?????? 考慮這樣一種情況,我們在 activeProfiles 下同時定義了多個需要激活的 profile 。這里還拿上面的 profile 定義來舉例,我們定義了同時激活 profileTest1 profileTest2

        <activeProfiles>
       <activeProfile>profileTest1</activeProfile>
       <activeProfile>profileTest2</activeProfile>
  </activeProfiles>


    

?

?????? profileTest1 profileTest2 我們可以看出它們共同定義了屬性 hello 。那么這個時候我在 pom.xml 中使用屬性 hello 的時候,它到底取的哪個值呢?是根據 activeProfile 定義的順序,后面的覆蓋前面的嗎?根據我的測試,答案是非也,它是根據 profile 定義的先后順序來進行覆蓋取值的,然后后面定義的會覆蓋前面定義的。

4.4.3? 使用-P參數顯示的激活一個profile

假設我們現在有如下定義的 profiles

      <profiles>
       <profile>
              <id>profileTest1</id>
              <properties>
                     <hello>world</hello>
              </properties>
       </profile>
       <profile>
              <id>profileTest2</id>
              <properties>
                     <hello>andy</hello>
              </properties>
       </profile>
<profiles>


    

?

?????? 那么當我們在進行 Maven 操作時就可以使用 -P 參數顯示的指定當前激活的是哪一個 profile 了。比如我們需要在對項目進行打包的時候使用 id profileTest1 profile ,我們就可以這樣做:

             mvn package –P profileTest1
    

?

?????? 當我們使用 activeByDefault settings.xml 中定義了處于激活的 profile ,但是當我們在進行某些操作的時候又不想它處于激活狀態,這個時候我們可以這樣做:

             Mvn package –P !profileTest1
    

?

?????? 這里假設 profileTest1 是在 settings.xml 中使用 activeProfile 標記的處于激活狀態的 profile ,那么當我們使用“ -P !profile ”的時候就表示在當前操作中該 profile 將不處于激活狀態。

4.4.4 根據環境來激活profile

profile 一個非常重要的特性就是它可以根據不同的環境來激活,比如說根據操作系統的不同激活不同的 profile ,也可以根據 jdk 版本的不同激活不同的 profile ,等等。

4.4.4.1 根據 jdk 來激活 profile

      <profiles>
       <profile>
              <id>profileTest1</id>
              <jdk>1.5</jdk>
       </profile>
<profiles>


    

?

?????? 上面情況表示在 jdk 1.5 版本系列的時候激活 profileTest1

      <profiles>
       <profile>
              <id>profileTest1</id>
              <jdk>[1.4,1.7)</jdk>
       </profile>
<profiles>


    

?

?????? 上面的情況表示在 jdk 1.4 1.5 1.6 的時候激活 profileTest1

4.4.4.2 根據操作系統來激活 profile

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <os>
                     <name>Windows XP</name>
                     <family>Windows</family>
                     <arch>x86</arch>
                     <version>5.1.2600</version>
                </os>
              </activation>
         </profile>
  </profiles>


    

?

?????? 上面的情況就是根據操作系統的類型來激活 profileTest1

4.4.4.3 根據系統屬性來激活 profile

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <property>
                     <name>hello</name>
                     <value>world</value>
                </property>
              </activation>
         </profile>
  </profiles>


    

?

上面的 profileTest1 將在提供了系統屬性 hello ,并且其值為 world 的時候激活。下面的做法可以激活 profileTest1

      mvn package –Dhello=world
    

?

?????? 當是下面的這種定義形式時, profileTest1 將在指定了系統屬性 hello ,且其值為任意值的時候被激活。

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <property>
                     <name>hello</name>
                </property>
              </activation>
         </profile>
  </profiles>


    

?

4.4.4.4 根據文件是否存在激活 profile

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <file>
                     <exists>target</exists>
                </file>
              </activation>
         </profile>
  </profiles>


    

?

上面的定義表示當存在 target 文件時激活 profileTest1

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <file>
                     <missing>target</missing>
                </file>
              </activation>
         </profile>
  </profiles>


    

?

?????? 上面的定義表示當不存在 target 文件時激活 profileTest1

4.5 ???? 查看當前處于激活狀態的 profile

我們可以同時定義多個 profile ,那么在建立項目的過程中,到底激活的是哪一個 profile 呢? Maven 為我們提供了一個指令可以查看當前處于激活狀態的 profile 都有哪些,這個指定就是 mvn help:active-profiles

現在假設我們的 settings.xml 文件中有如下 profile 的定義:

        <profiles>
         <profile>
              <id>profileTest1</id>
              <activation>
                <file>
                     <missing>target</missing>
                </file>
              </activation>
         </profile>
  </profiles>
  
  <activeProfiles>
       <activeProfile>profileTest1</activeProfile>
  </activeProfiles>


    

?

?????? 這個時候我們可以看到,我們已經定義了 profileTest1 始終為激活狀態,這個時候我們使用 mvn help:active-profiles 查看處于激活狀態的 profile 時,就會打印出如下內容:


Maven簡介(三)——profile介紹
?

Maven簡介(三)——profile介紹


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久草在线资源视频 | 高清亚洲 | 中文字幕在线二区 | 成人黄色在线视频 | 精品欧美乱码久久久久久1区2区 | 狠狠综合久久av一区二区小说 | 小明成人免费视频 | 国产一级免费视频 | 日韩欧美在线观看视频 | 国产三级在线精品男人的天堂 | 天天射天天操天天干 | 成人综合视频网 | 男女生性毛片免费观看 | 日韩色中色 | 日韩国产欧美视频 | 99精品视频在线免费观看 | 三级网站免费看 | 亚洲久久一区 | 美女网站黄在线观看 | 日本不卡一区二区 | 国产欧美日韩精品一区 | 国产内谢| 亚洲国产综合精品中文第一区 | 国产一区二区三区免费 | 亚洲精品久久久 | 欧美一级www | 国产精品美女久久久久久久久久久 | 一区二区免费视频观看 | 奇米影音第四色 | 国产欧美日韩在线观看 | 成人精品鲁一区一区二区 | 波多野结衣家教老师 | 亚洲精品人成网在线播放影院 | 亚洲色四在线视频观看 | 免费视频大片在线观看 | 91文字幕巨乱亚洲香蕉 | a毛片视频| 韩国资源视频一区二区三区 | 一级免费看片 | 亚洲欧美小视频 | 欧美日韩中字 |