Maven settings.xml 文件詳解

概述

settings.xml 文件中的 settings 元素包含用于以各種方式配置 Maven 的元素(就像 pom.xml 文件一樣)开仰,但不應(yīng)捆綁到任何特定項(xiàng)目衡查,或分發(fā)給受眾愿卸。其中包括本地存儲(chǔ)庫(kù)位置疆偿、備用遠(yuǎn)程存儲(chǔ)庫(kù)服務(wù)器和身份驗(yàn)證信息等值先巴。

settings.xml 文件可能位于兩個(gè)位置:

  • ${maven.home}/conf/settings.xml褐奥。該文件為使用同一個(gè) Maven 安裝位置的用戶(hù)提供全局配置,可以通過(guò)在命令行使用 -gs 選項(xiàng)替換其默認(rèn)位置饭于,比如 -gs /path/to/global/settings.xml蜀踏;
  • ${user.home}/.m2/settings.xml。該文件為用戶(hù)特定的設(shè)置掰吕,可以通過(guò)在命令行使用 -s 選項(xiàng)替換其默認(rèn)位置果覆,比如 -s /path/to/user/settings.xml

如果兩個(gè)文件都存在殖熟,則它們的內(nèi)容將合并局待,如果某些相同的設(shè)置同時(shí)出現(xiàn)在兩個(gè)文件中,則以采用用戶(hù)特定的設(shè)置吗讶。

提示:如果需要從頭開(kāi)始創(chuàng)建特定于用戶(hù)的設(shè)置燎猛,最簡(jiǎn)單的方法是將全局設(shè)置的 ${maven.home}/conf/settings.xml 文件從 Maven 安裝目錄復(fù)制到 ${user.home}/.m2 目錄恋捆。Maven 默認(rèn)的 settings.xml 文件是一個(gè)帶有注釋和示例的模板照皆,因此可以根據(jù)需要快速調(diào)整它。

以下是 settings 元素中的各頂級(jí)子元素的結(jié)構(gòu):

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository/>
    <interactiveMode/>
    <offline/>
    <pluginGroups/>
    <servers/>
    <mirrors/>
    <proxies/>
    <profiles/>
    <activeProfiles/>
</settings>

可以使用以下方式來(lái)覆蓋 settings.xml 的內(nèi)容:

  • ${user.home} 和所有其他系統(tǒng)屬性(自 Maven 3.0 以來(lái))沸停;
  • ${env.HOME} 等膜毁,用于環(huán)境變量。

請(qǐng)注意愤钾,在 settings.xml 中的 profile 中定義的 property 不能用于覆蓋 settings.xml 中的內(nèi)容瘟滨。

一些簡(jiǎn)單設(shè)置

settings 元素中有一半是簡(jiǎn)單設(shè)置(一個(gè) xml 元素搞定),這些值描述了整個(gè)構(gòu)建過(guò)程中一直激活的設(shè)置能颁。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${user.home}/.m2/repository</localRepository>
  <interactiveMode>true</interactiveMode>
  <offline>false</offline>
  ...
</settings>
  • localRepository:該元素值是默認(rèn)的本地倉(cāng)庫(kù)路徑杂瘸。默認(rèn)值為 ${user.home}/.m2/repository。對(duì)于 pom.xml 文件中為項(xiàng)目配置的所需依賴(lài)包伙菊,Maven 首先會(huì)根據(jù)依賴(lài)的三個(gè)坐標(biāo)檢查本地倉(cāng)庫(kù)中是否存在對(duì)應(yīng)的依賴(lài)包败玉,如果存在,則使用對(duì)應(yīng)的依賴(lài)包镜硕,如果不存在运翼,則會(huì)自動(dòng)連接遠(yuǎn)程 Maven 倉(cāng)庫(kù)下載對(duì)應(yīng)的依賴(lài)包。這樣兴枯,可以大大減少下載依賴(lài)包的網(wǎng)絡(luò)流量血淌。
  • interactiveMode:如果希望使 Maven 使用與用戶(hù)交互的方式來(lái)提示用戶(hù)輸入,則將該元素值設(shè)置為 true财剖,否則設(shè)置為 false悠夯。默認(rèn)為 true癌淮。如果該元素值為 false丁频, Maven 將使用一個(gè)可能基于其他設(shè)置的合理默認(rèn)值遵倦。
  • offline:如果希望 Maven 在離線(xiàn)模式下運(yùn)行,則將該元素值設(shè)置為 true地啰,默認(rèn)為 false策彤。該元素對(duì)于由于網(wǎng)絡(luò)設(shè)置或安全原因而無(wú)法連接到遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器的情形非常有用栓袖。

pluginGroups

pluginGroups 元素包含 pluginGroup 子元素的列表,每個(gè)元素都包含一個(gè) groupId店诗。當(dāng)在命令行中使用形如 mvn prefix:goal 的命令且未提供插件的 groupId 時(shí)裹刮,將搜索該列表。該列表自動(dòng)包含了 org.apache.maven.pluginsorg.codehaus.mojo庞瘸。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <pluginGroups>
    <pluginGroup>org.eclipse.jetty</pluginGroup>
  </pluginGroups>
  ...
</settings>

例如捧弃,如果使用上述設(shè)置,可以在命令行中使用插件前綴來(lái)執(zhí)行完成的插件命令擦囊。比如 mvn jetty:run 等同于執(zhí)行 org.eclipse.jetty:jetty-maven-plugin:run 命令违霞。

Servers

用于下載工件(artifact)和部署工件的倉(cāng)庫(kù)由 POM 的 repositoriesdistributionManagement 元素定義。但是瞬场,某些設(shè)置(如用戶(hù)名和密碼)不應(yīng)與 pom.xml 一起分發(fā)买鸽。此類(lèi)信息應(yīng)存在于構(gòu)建服務(wù)器的 settings.xml 中。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <servers>
    <server>
      <id>server001</id>
      <username>my_login</username>
      <password>my_password</password>
      <privateKey>${user.home}/.ssh/id_dsa</privateKey>
      <passphrase>some_passphrase</passphrase>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
      <configuration></configuration>
    </server>
  </servers>
  ...
</settings>
  • id:與 Maven 嘗試連接的倉(cāng)庫(kù)或鏡像的 id 元素相匹配的服務(wù)器 id(而不是登錄用戶(hù)的 id)贯被。
  • username眼五、 password:這兩個(gè)元素成對(duì)出現(xiàn),表示向該服務(wù)器進(jìn)行身份驗(yàn)證所需的登錄名和密碼彤灶。
  • privateKey看幼、passphrase:與前兩個(gè)元素一樣,這對(duì)元素指定私鑰的路徑(默認(rèn)值為 ${user.home}/.ssh/id_dsa)和口令(passphrase幌陕,如果需要)诵姜。passphrasepassword 元素將來(lái)可能會(huì)外部化,但目前它們必須在 settings.xml 文件中設(shè)置為純文本搏熄。
  • filePermissions棚唆、directoryPermissions:在部署時(shí)創(chuàng)建倉(cāng)庫(kù)文件或目錄時(shí),這些是要使用的權(quán)限搬卒,該權(quán)限的法定值是一個(gè)三位數(shù)字瑟俭,對(duì)應(yīng)于類(lèi) Unix 文件權(quán)限,例如 664 或 775契邀。

注意:如果使用私鑰登錄服務(wù)器摆寄,請(qǐng)確保省略 <password> 元素。否則,該鍵將被忽略微饥。

從 Maven 2.1.0+逗扒,可以對(duì) passwordpassphrase 元素值進(jìn)行加密,詳情請(qǐng)參閱這里欠橘。

Mirrors

<mirrors> 元素指定從遠(yuǎn)程倉(cāng)庫(kù)下載工件(artifact)時(shí)所使用的鏡像列表矩肩。它是這樣工作的:一個(gè) POM 可以聲明一個(gè)倉(cāng)庫(kù)來(lái)解析某些工件。然而肃续,這個(gè)倉(cāng)庫(kù)有時(shí)可能會(huì)遇到流量過(guò)大的問(wèn)題黍檩,所以將其副本復(fù)制到了好幾個(gè)地方。這個(gè)副本倉(cāng)庫(kù)將有一個(gè)唯一的 id始锚,因此我們可以為該副本倉(cāng)庫(kù)創(chuàng)建一個(gè)鏡像引用刽酱,用作代替原先的下載站點(diǎn)。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <mirrors>
    <mirror>
      <id>planetmirror.com</id>
      <name>PlanetMirror Australia</name>
      <url>http://downloads.planetmirror.com/pub/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>
  • id瞧捌、name:該鏡像的唯一標(biāo)識(shí)符和用戶(hù)友好名稱(chēng)棵里。id 用于區(qū)分 mirror 元素,并在連接到鏡像時(shí)從 <servers> 元素中選擇相應(yīng)的憑據(jù)姐呐。
  • url:該鏡像的基本 url殿怜。Maven 將使用該 URL 連接到倉(cāng)庫(kù),而不是原始倉(cāng)庫(kù)的 URL曙砂。
  • mirrorOf:這是鏡像倉(cāng)庫(kù)的 id头谜。例如,如果設(shè)置指向 Maven central 倉(cāng)庫(kù)(https://repo.maven.apache.org/maven2/)的鏡像麦轰,將該元素設(shè)置為 central乔夯。更高級(jí)的映射砖织, 如 repo1,repo2*,!inhouse款侵。該元素值必須與 <mirror> 元素的 <id> 子元素值不匹配。

下面是幾個(gè)在國(guó)內(nèi)下載速度比較快的鏡像網(wǎng)站配置:

    <mirrors>
        <!-- 國(guó)內(nèi)的鏡像網(wǎng)站(下載速度應(yīng)該快上不少) -->
        <mirror>
            <id>huaweiyun</id>
            <mirrorOf>central</mirrorOf>
            <name>華為云公共倉(cāng)庫(kù)</name>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </mirror>
        <mirror>
            <id>aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>阿里云公共倉(cāng)庫(kù)</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </mirror>
        <mirror>
            <id>tencentyun</id>
            <mirrorOf>central</mirrorOf>
            <name>騰訊云公共倉(cāng)庫(kù)</name>
            <url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
        </mirror>
        <!-- 國(guó)外的鏡像網(wǎng)站(下載速度可能較慢) -->
        <mirror>    
            <id>repo2</id>    
            <mirrorOf>central</mirrorOf>    
            <name>Maven Central Public Repository</name>    
            <url>http://repo2.maven.org/maven2/</url>    
        </mirror>
        <mirror>
            <id>ibiblio</id>    
            <mirrorOf>central</mirrorOf>    
            <name>ibiblio Repository</name>    
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>    
        </mirror>    
        <mirror>    
            <id>jboss-public-repository-group</id>    
            <mirrorOf>central</mirrorOf>    
            <name>JBoss Public Repository Group</name>    
            <url>http://repository.jboss.org/nexus/content/groups/public</url>    
        </mirror>  
        <mirror>    
            <id>JBossJBPM</id>   
          <mirrorOf>central</mirrorOf>   
          <name>JBossJBPM Repository</name>   
          <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>  
        </mirror>  
    </mirrors>

Proxies

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <proxies>
    <proxy>
      <id>myproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
    </proxy>
  </proxies>
  ...
</settings>
  • id:此代理的唯一標(biāo)識(shí)符侧纯。這用于區(qū)分代理元素新锈。
  • active:如果此代理處于激活狀態(tài),則將該元素值設(shè)置為 true眶熬。這在聲明了一組代理時(shí)非常有用妹笆,但一次只能有一個(gè)代理處于激活狀態(tài)。
  • protocol娜氏、host拳缠、port:代理 protocol://host:port,分散為三個(gè)元素贸弥。
  • username窟坐、password:這些元素成對(duì)出現(xiàn),表示向該代理服務(wù)器進(jìn)行身份驗(yàn)證所需的登錄名和密碼。
  • nonProxyHosts:不應(yīng)代理的目標(biāo)主機(jī)列表哲鸳。該列表所用的分隔符是代理服務(wù)器的預(yù)期類(lèi)型臣疑。上面的示例是管道符分隔的,逗號(hào)分隔也是常見(jiàn)的徙菠。

除非另有指定(通過(guò)系統(tǒng)屬性或命令行開(kāi)關(guān))讯沈,否則將使用 proxies 元素中第一個(gè)激活的代理設(shè)置。

Profiles

settings.xml 文件中的 profile 元素是 pom.xml 文件中 profile 元素的縮減版本婿奔。settings.xml 文件中的 profile 元素由 activation缺狠、repositoriespluginRepositoriesproperties 這四個(gè)子元素組成萍摊,它們與構(gòu)建系統(tǒng)作為一個(gè)整體(這正是 settings.xml 文件所扮演的角色)儒老,而與單個(gè)項(xiàng)目的對(duì)象模型設(shè)置無(wú)關(guān)。

如果一個(gè) profilesettings 元素中處于激活狀態(tài)记餐,則其值將覆蓋 POM 或 profiles.xml 文件中的任何等效 ID 的 profile 設(shè)置驮樊。

與 POM 的 profile 一樣, settings 元素中的 profile 的好處在于它可以在特定情況下修改某些值片酝,這通常是通過(guò) activation 元素來(lái)指定的囚衔。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <profiles>
    <profile>
      <id>test</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.3</value>
        </property>
        <file>
          <exists>${basedir}/file2.properties</exists>
          <missing>${basedir}/file1.properties</missing>
        </file>
      </activation>
      ...
    </profile>
  </profiles>
  ...
</settings>

當(dāng)所有指定的條件都滿(mǎn)足時(shí)才會(huì)激活,盡管并非所有條件都需要同時(shí)滿(mǎn)足雕沿。

  • jdkactivation 元素在 jdk 元素中有一個(gè)內(nèi)置的练湿、以 Java 為中心的檢查。如果當(dāng)前運(yùn)行 Maven 的 JDK 版本與 jdk 元素中的 JDK 版本號(hào)前綴相匹配审轮,則該 profile 將被激活肥哎。在上面的示例中,可以匹配 1.5.0_06疾渣。還支持范圍篡诽。有關(guān)支持范圍的更多詳細(xì)信息,請(qǐng)參閱 maven-enforcer-plugin 插件榴捡。
  • osos 元素可以定義上面所示的一些特定于操作系統(tǒng)的 property杈女。有關(guān)操作系統(tǒng)值的更多詳細(xì)信息,請(qǐng)參閱 maven-enforcer-plugin 插件吊圾。
  • property:如果 Maven 檢測(cè)到對(duì)應(yīng)的 name=value 的 property(可以在 POM 文件中使用 ${name} 來(lái)間接引用該 property 的值)达椰,該 profile 將被激活。
  • file:最后项乒,一個(gè)給定的文件名可能通過(guò)文件的存在或丟失來(lái)激活 profile啰劲。

activation 元素不是激活 profile 的唯一方式。settings.xml 文件的 activeProfile 元素可能包含 profile 的 id檀何。它們也可以通過(guò)在命令行中的 -P 標(biāo)志后跟一個(gè)逗號(hào)分隔列表來(lái)顯式激活某個(gè) profile(例如 -P test)蝇裤。

要查看哪個(gè) profile 將在特定構(gòu)建中激活趁尼,請(qǐng)使用 maven-help-plugin 插件。

mvn help:active-profiles

Properties

Maven 中的 property 是值占位符猖辫,就像 Ant 中的 property 一樣酥泞,它們的值可以通過(guò)使用諸如 ${X} 的形式在 POM 中的任何位置訪(fǎng)問(wèn)名為 X property 的值。它們有五種不同的樣式啃憎,都可以從 settings.xml 文件訪(fǎng)問(wèn):

  • env.X:在變量前面加上 env. 將返回 shell 的環(huán)境變量芝囤。例如,${env.PATH} 包含 $path 環(huán)境變量(在 Windows 中對(duì)應(yīng)的環(huán)境變量為 %PATH% )辛萍;
  • project.x:POM 中以點(diǎn)號(hào) . 表示的路徑將包含相應(yīng)元素的值悯姊。例如:<project><version>1.0</version></project> 可以通過(guò) ${project.version} 訪(fǎng)問(wèn);
  • settings.xsettings.xml 中以點(diǎn)號(hào) . 表示的路徑將包含相應(yīng)元素的值贩毕。例如:<settings><offline>false</offline></settings> 可通過(guò)${settings.offline} 訪(fǎng)問(wèn)悯许。
  • Java 系統(tǒng)屬性:通過(guò) java.lang.System.getProperties() 訪(fǎng)問(wèn)的所有 property 都可以作為 POM 的 property 使用,例如 ${java.home}辉阶。
  • x:在 <properties/> 元素或外部文件中設(shè)置先壕,該值可以用作 ${someVar}
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <profiles>
    <profile>
      ...
      <properties>
        <user.install>${user.home}/our-project</user.install>
      </properties>
      ...
    </profile>
  </profiles>
  ...
</settings>

如果該 profile 處于激活狀態(tài)谆甜,則可以從 POM 文件訪(fǎng)問(wèn) ${user.install} property垃僚。

Repositories

倉(cāng)庫(kù)是項(xiàng)目的遠(yuǎn)程集合,Maven 可以使用這些遠(yuǎn)程項(xiàng)目填充構(gòu)建系統(tǒng)的本地倉(cāng)庫(kù)规辱,Maven 將其 plugindependency 存儲(chǔ)在這個(gè)本地倉(cāng)庫(kù)中谆棺。不同的遠(yuǎn)程倉(cāng)庫(kù)可能包含不同的項(xiàng)目,在某個(gè)激活的 profile 下罕袋,可以搜索這些遠(yuǎn)程倉(cāng)庫(kù)來(lái)查找匹配的 release 或 snapshot 的工件改淑。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>codehausSnapshots</id>
          <name>Codehaus Snapshots</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://snapshots.maven.codehaus.org/maven2</url>
          <layout>default</layout>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>myPluginRepo</id>
          <name>My Plugins repo</name>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <url>https://maven-central-eu....com/maven2/</url>
        </pluginRepository>
      </pluginRepositories>
      ...
    </profile>
  </profiles>
  ...
</settings>
  • releasessnapshots:有了這兩個(gè)元素浴讯,POM 就可以在對(duì)應(yīng)的倉(cāng)庫(kù)中獨(dú)立地選擇使用 releasesnapshot 類(lèi)型的工件(artifact)朵夏。例如,開(kāi)發(fā)人員可能出于開(kāi)發(fā)目的僅啟用 Snapshot 下載兰珍。
  • enabled:對(duì)于該倉(cāng)庫(kù)是否已為相應(yīng)類(lèi)型(版本或快照)啟用侍郭,為 true 或 false询吴。
  • updatePolicy:該元素指定更新發(fā)生的頻率掠河。Maven 將本地 POM 的時(shí)間戳(存儲(chǔ)在倉(cāng)庫(kù)的 Maven 元數(shù)據(jù)文件中)與遠(yuǎn)程 POM 進(jìn)行比較。該元素值可以為:always猛计、daily(默認(rèn))唠摹、interval:X(其中,其中 X 是以分鐘為單位的整數(shù))奉瘤、或 never勾拉。
  • checksumPolicy:當(dāng) Maven 將文件部署到倉(cāng)庫(kù)時(shí)煮甥,它也會(huì)部署相應(yīng)的校驗(yàn)和文件。當(dāng)丟失校驗(yàn)和文件或校驗(yàn)和文件錯(cuò)誤時(shí)藕赞,可以選擇 ignore成肘、failwarn斧蜕。
  • layout:上面對(duì)倉(cāng)庫(kù)的描述中提到倉(cāng)庫(kù)都遵循一個(gè)通用的布局双霍,這基本上是正確的。Maven 2 的倉(cāng)庫(kù)有一個(gè)默認(rèn)布局批销;然而洒闸,Maven 1.x 有一個(gè)不同的布局。使用該元素可以指定 default 布局(Maven 2 的布局)還是 legacy 布局(Maven 1.x 的布局)均芽。

Plugin Repositories

倉(cāng)庫(kù)是兩種主要類(lèi)型工件的所在地:

  • 第一種是用作依賴(lài)(dependency)的工件丘逸,Maven 中央倉(cāng)庫(kù)中的大多數(shù)工件都是這種類(lèi)型;
  • 另一類(lèi)工件是插件(plugin)掀宋。Maven 插件本身就是一種特殊類(lèi)型的工件深纲。正因?yàn)槿绱耍寮}(cāng)庫(kù)可能與其他倉(cāng)庫(kù)分離(盡管如此劲妙,一般是不會(huì)將插件倉(cāng)庫(kù)和其他倉(cāng)庫(kù)分開(kāi)的)囤萤。

在任何情況下,pluginRepositories 元素的結(jié)構(gòu)都類(lèi)似于 repositories 元素是趴。pluginRepository 元素都指定了 Maven 可以在其中找到插件的遠(yuǎn)程地址涛舍。

Active Profiles

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <activeProfiles>
    <activeProfile>env-test</activeProfile>
  </activeProfiles>
</settings>

settings.xml 元素的最后一塊是 activeProfiles 元素。這包含一組 activeProfile 元素唆途,每個(gè) activeProfile 元素都有一個(gè) profileid 值富雅。無(wú)論環(huán)境設(shè)置如何,定義為 activeProfile 的任何 profile id 都將處于激活狀態(tài)肛搬。如果沒(méi)有找到匹配的 profile没佑,則什么也不會(huì)發(fā)生。例如温赔,如果 env-testactiveProfile蛤奢,則 pom.xml(或 profile.xml)中具有相應(yīng) idprofile 將處于激活狀態(tài)。如果沒(méi)有找到這樣的 profile陶贼,則會(huì)忽略并繼續(xù)執(zhí)行其他配置啤贩。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拜秧,隨后出現(xiàn)的幾起案子痹屹,更是在濱河造成了極大的恐慌,老刑警劉巖枉氮,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件志衍,死亡現(xiàn)場(chǎng)離奇詭異暖庄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)楼肪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)培廓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人春叫,你說(shuō)我怎么就攤上這事医舆。” “怎么了象缀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵蔬将,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我央星,道長(zhǎng)霞怀,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任莉给,我火速辦了婚禮毙石,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颓遏。我一直安慰自己徐矩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布叁幢。 她就那樣靜靜地躺著滤灯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曼玩。 梳的紋絲不亂的頭發(fā)上鳞骤,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音黍判,去河邊找鬼豫尽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顷帖,可吹牛的內(nèi)容都是我干的美旧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贬墩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼榴嗅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起震糖,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤录肯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后吊说,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體论咏,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年颁井,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了厅贪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雅宾,死狀恐怖养涮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眉抬,我是刑警寧澤贯吓,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站蜀变,受9級(jí)特大地震影響悄谐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜库北,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一爬舰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寒瓦,春花似錦情屹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至喂很,卻和暖如春蜡镶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恤筛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工官还, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毒坛。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓望伦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親煎殷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屯伞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一、配置分級(jí) 首先需要了解的是Maven配置文件以及配置方式的分級(jí)豪直,才能做到我們自己在日常開(kāi)發(fā)配置中靈活使用劣摇。根據(jù)...
    老貓燒須閱讀 14,813評(píng)論 1 12
  • 概要 settings.xml有什么用? 如果在Eclipse中使用過(guò)Maven插件弓乙,想必會(huì)有這個(gè)經(jīng)驗(yàn):配置set...
    靜默虛空閱讀 19,376評(píng)論 2 32
  • maven運(yùn)行時(shí)的配置文件settings.xml 安裝位置 全局配置:${maven_home}/config/...
    Elf_樂(lè)易閱讀 5,448評(píng)論 0 1
  • 本文是對(duì)https://maven.apache.org/settings.html的翻譯和總結(jié) 介紹 快速概覽 ...
    AlanSun2閱讀 9,071評(píng)論 0 4
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者末融,不喜歡去冒險(xiǎn)钧惧,但是人生放棄了冒險(xiǎn),也就放棄了無(wú)數(shù)的可能勾习。 ...
    yichen大刀閱讀 6,038評(píng)論 0 4