Java Maven Settings配置參考

来源:https://www.cnblogs.com/shouke/archive/2023/07/24/17576265.html
-Advertisement-
Play Games

## 介紹 ### 快速概覽 `settings.xml`文件中的 `settings` 元素包含用於定義以各種方式配置Maven執行的值的元素,如`pom.xml`,但不應綁定到任何特定項目或分發給受眾。這些值包括本地倉庫位置、備用遠程倉庫伺服器和身份驗證信息。 `settings.xml`文件可 ...


介紹

快速概覽

settings.xml文件中的 settings 元素包含用於定義以各種方式配置Maven執行的值的元素,如pom.xml,但不應綁定到任何特定項目或分發給受眾。這些值包括本地倉庫位置、備用遠程倉庫伺服器和身份驗證信息。

settings.xml文件可能位於兩個地方:

  • Maven安裝:${maven.home}/conf/settings.xml

  • 用戶安裝:${user.home}/.m2/settings.xml

前者的 settings.xml也稱為全局設置,後者的 settings.xml稱為用戶設置。如果這兩個文件都存在,它們的內容就會被合併,而用戶特定的 settings.xml占主導地位。

提示:如果您需要從頭開始創建特定於用戶的設置,最簡單的方法是將全局設置從Maven安裝位置複製到${user.home}/.m2目錄中。Maven的預設 settings.xml是一個包含註釋和示例的模板,因此你可以快速調整它以滿足您的需求。

以下是settings下的頂級元素概述:

<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>

settings.xml的內容可以使用以下表達式進行插值(interpolated):

1.${user.home}和所有其他系統屬性(自Maven 3.0以來)

2.${env.HOME}等環境變數

請註意,在settings.xml 中的profiles中定義的屬性不能用於插值。

一個簡單配置示例

<?xml version="1.0" encoding="UTF-8" ?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <localRepository>D:\maven-repo</localRepository>
    <servers>
        <server>
            <username>testUser</username>
            <password>APBNwz5vH2BK2Et9ujKQsWQQ245</password>
            <id>central</id>
        </server>
        <server>
            <username>testUser</username>
            <password>APBNwz5vH2BK2Et9ujKQsWQQ245</password>
            <id>snapshots</id>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <mirrorOf>*</mirrorOf>
            <name>maven</name>
            <url>https://artifactory.example.com/artifactory/maven</url>
            <id>maven</id>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <repositories>
                <repository>
                    <id>nexus-aliyun</id>
                    <name>nexus-aliyun</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>

                <repository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>maven</name>
                    <url>https://artifactory.example.com/artifactory/maven</url>
                </repository>
                <repository>
                    <snapshots />
                    <id>snapshots</id>
                    <name>maven</name>
                    <url>https://artifactory.example.com/artifactory/maven</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>alimaven</id>
                    <name>aliyun maven</name>
                    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                </pluginRepository>
                <pluginRepository>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <id>central</id>
                    <name>maven</name>
                    <url>https://artifactory.example.com/artifactory/maven</url>
                </pluginRepository>
                <pluginRepository>
                    <snapshots />
                    <id>snapshots</id>
                    <name>maven</name>
                    <url>https://artifactory.example.com/artifactory/maven</url>
                </pluginRepository>
            </pluginRepositories>
            <id>artifactory</id>
        </profile>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>artifactory</activeProfile>
    </activeProfiles>
</settings>

Settings明細

簡單值

頂級settings 元素的一半是簡單值,表示一系列值,這些值描述了構建系統中一直處於激活(active full-time)的元素

<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: 該元素值是該構建系統的本地倉庫的路徑。預設值為${user.home}/.m2/repository。該元素對於允許所有登錄用戶從公共本地倉庫進行構建的主伺服器構建特別有用。

  • interactiveMode: 如果Maven應該嘗試與用戶交互以獲取輸入則設置為true,否則為false。預設為true

  • offline: 如果此生成系統應在離線模式下運行則設置為true,否則為false。預設為false。該元素對於由於網路設置或安全原因而無法連接到遠程倉庫的伺服器構建非常有用。

插件組(Plugin Groups)

此元素包含一個 pluginGroup 元素列表,每個元素都包含一個組ID。當用到某個插件並且命令行中沒有提供該插件組件ID時,會搜索該列表。此列表自動包含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>

例如,跟進上述給定的設置,Maven命令行可以使用截斷的命令執行org.eclipse.jetty:jetty-Maven plugin:run

mvn jetty:run

伺服器(Servers)

由POM的repositionsdistributionManagement元素定義的,用於下載和發佈的倉庫。但是,某些設置(如 usernamepassword )不應與 pom.xml一起分發。此類信息應存在於 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試圖連接的,與倉庫/鏡像的 id 元素匹配的伺服器(而不是要登錄的用戶)的ID。
  • username, password: 這兩元素成對出現,分別表示對此伺服器進行身份驗證所需的登錄名和密碼。
  • privateKey, passphrase: 類似前兩個元素,這對元素指定私鑰(預設為 ${user.home}/.ssh/id_dsa)和passphrase的路徑,如果必要的話。passphrasepassword元素將來可能會外部化,但目前它們必須在settings.xml文件中設置為純文本。
  • filePermissions, directoryPermissions: 在發佈時創建倉庫文件或目錄時,需要使用的許可權。每個的合法值是一個三位數,對應於*nix文件許可權,例如664或775。

註意:如果使用私鑰登錄伺服器,請確保省略<password> 元素。否則,該鍵將被忽略。

密碼加密

2.1.0+中添加了一項新功能-伺服器密碼和passphrase加密。詳情請查閱https://maven.apache.org/guides/mini/guide-encryption.html

鏡像(Mirrors)

<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: 分別表示此鏡像的唯一標識符和用戶友好的名稱。 id用於區分mirror元素,以及連接到鏡像時,用於從servers 中選擇相應的憑據。
  • url: 鏡像的基礎URL。構建系統將使用此URL連接到倉庫,而不是原始倉庫的URL。
  • mirrorOf: 設置要被鏡像的倉庫id。例如,如需指向Mavencenter倉庫(https://repo.maven.apache.org/maven2/)的鏡像,設置該元素值為center。更高級的映射,如repo1,repo2*,!inhouse也是可以的。該配置值一定與鏡像id不同。

有關鏡像的更深入介紹,請閱讀鏡像設置指南

鏡像設置指南

為倉庫使用鏡像

擁有倉庫,你可以指定要從哪個位置下載某些工件,例如依賴項和maven插件。可以在項目內部聲明倉庫,這意味著,如果你有自己的自定義倉庫,那些共用你項目的可以很容易地獲得開箱即用的正確配置。但是,你可能希望在不更改項目文件的情況下為特定倉庫使用備用鏡像。

使用鏡像的一些原因是:

  • 互聯網上有一個同步鏡像,地理位置更近、速度更快
  • 希望用自己的內部倉庫替換特定的倉庫,可以對其進行更大的控制
  • 想運行倉庫管理器為鏡像提供本地緩存,而需要使用其URL

可以簡單的把mirror理解為一個攔截器,攔截maven對遠程repository的相關請求,然後把請求里的remote repository地址,重定向到mirror里配置的地址,如下

未配置鏡像前:

配置鏡像之後:

要為給定倉庫配置鏡像,需在配置文件(${user.home}/.m2/settings.xml)中提供它,為新倉庫指定自己的idurl,並指定mirrorOf設置,即被鏡像的倉庫ID。例如,預設情況下包含的Maven Central主倉庫的ID為central,因此要使用不同的鏡像實例,需要配置以下內容:

<settings>
  ...
  <mirrors>
    <mirror>
      <id>other-mirror</id>
      <name>Other Mirror Repository</name>
      <url>https://other-mirror.repo.other-company.com/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

註意,對於給定的倉庫,最多可以有一個鏡像。換句話說,不能將單個倉庫映射到一組定義相同<mirrorOf>值的鏡像。Maven不會聚合鏡像,而是簡單地選擇第一個匹配的鏡像。如果要提供多個倉庫的組合視圖,請使用倉庫管理器

settings.xml述符文檔查閱https://maven.apache.org/ref/3.9.3/maven-settings/settings.html

:Maven的官方倉庫位於https://repo.maven.apache.org/maven2由Sonatype公司托管,並通過CDN在全球範圍內分發。

倉庫Metadata中提供了已知鏡像的列表。這些鏡像可能沒有相同的內容,我們不以任何方式支持它們。

使用單個倉庫

可以通過讓Maven鏡像所有倉庫請求來強制它使用單個倉庫。倉庫必須包含所有所需的工件,或者能夠將請求代理到其他倉庫。當使用具有代理外部請求的Maven 倉庫管理器的內部公司倉庫時,此設置最有用。

為此,請將 mirrorOf設置為*

註意:此功能僅在Maven 2.0.5+中可用。

<settings>
  ...
  <mirrors>
    <mirror>
      <id>internal-repository</id>
      <name>Maven Repository Manager running on repo.mycompany.com</name>
      <url>http://repo.mycompany.com/proxy</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

高級設置

單個鏡像可以處理多個倉庫。這通常與倉庫管理器結合使用,後者可以方便地集中配置鏡像背後的倉庫列表。

語法:

  • *匹配所有倉庫ID。
  • external:*匹配除使用localhost或基於文件的倉庫以外的所有倉庫。當希望排除為集成測試定義的重定向倉庫時,使用此選項。
  • 從Maven 3.8.0開始, external:http:* 匹配使用localhost除外,所有使用HTTP的倉庫
  • 可以使用逗號作為分隔符指定多個倉庫
  • 感嘆號可以與上述通配符之一一起使用,以排除倉庫id

註意不要在逗號分隔列表中的標識符或通配符周圍包含額外的空格。例如,將<mirrorOf>設置為!repo1, *不會鏡像任何內容,而!repo1,*將鏡像除repo1之外的所有內容。

通配符在以逗號分隔的倉庫標識符列表中的位置並不重要,因為通配符會推遲進一步處理,並且顯式包含或排除會停止處理,從而否決任何通配符匹配(原文:The position of wildcards within a comma separated list of repository identifiers is not important as the wildcards defer to further processing and explicit includes or excludes stop the processing, overruling any wildcard match)。

當您使用高級語法並配置多個鏡像時,聲明順序很重要。當Maven查找某個倉庫的鏡像時,它首先檢查<mirrorOf>與倉庫標識符完全匹配的鏡像。如果沒有找到直接匹配,Maven會根據上面的規則(如果有的話)選擇第一個匹配的鏡像聲明。因此,可以通過更改settings.xml中定義的順序來影響匹配順序

示例:

  • *=所有倉庫

  • external:*=所有不在本地主機上且不基於文件的內容。

  • repo,repo1 = repo 或者repo1

  • *,!repo1 = 除repo1的所有倉庫

<settings>
  ...
  <mirrors>
    <mirror>
      <id>internal-repository</id>
      <name>Maven Repository Manager running on repo.mycompany.com</name>
      <url>http://repo.mycompany.com/proxy</url>
      <mirrorOf>external:*,!foo</mirrorOf>
    </mirror>
    <mirror>
      <id>foo-repository</id>
      <name>Foo</name>
      <url>http://repo.mycompany.com/foo</url>
      <mirrorOf>foo</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

創建自己的鏡像

central倉庫的大小正在穩步增加。為了節省帶寬和你的時間,不允許鏡像整個central倉庫(如果這樣做會被自動禁止)相反,建議設置一個倉庫管理器 作為代理。

代理(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: 此代理的唯一標識符。這用於區分proxy 元素。

  • active: true 如果此代理處於活動狀態,則為true 。這對於聲明一組代理很有用,但一次只能有一個代理處於活動狀態。

  • protocol, host, port: 代理的 protocol://host:port,分隔成單個元素

  • username, password: 這些元素成對出現,表示對此代理伺服器進行身份驗證所需的登錄名和密碼

  • nonProxyHosts: 這是不應使用代理的主機列表。列表的分隔符是代理伺服器的預期類型;上面的例子是管道分隔的,逗號分隔也是常見的。

Profiles

settings.xml中的profile 元素是 pom.xml profile 元素的“裁剪”版本。它由activation, repositories, pluginRepositoriesproperties 元素組成。 profile元素只包括這四個元素,因為它們關註的是整個構建系統(即settings.xml文件的作用),而不是單個項目對象模型設置。

如果一個settings.xml中的profile被激活,它的值會覆蓋任何其它定義在pom.xmlprofiles.xml中帶有相同ID的profile

Activation

Activations是配置文件的關鍵。與POM的profiles一樣,profile的力量來自於它僅在特定情況下修改某些值的能力;這些情況是通過<activation>元素指定的。

<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>

當滿足所有指定的條件時,將激活profile,但並非需要同時滿足所有條件。

  • jdkactivationjdk 元素中有一個內置的、以Java為中心的檢查。如果在與給定版本首碼匹配的jdk版本號下運行測試,這將激活profile。在上面的示例中,1.5.0_06將匹配給定首碼即1.5。也支持範圍。請參閱maven enforcer插件獲取有關支持範圍的更多詳細信息。

  • osos元素可以定義上面顯示的一些特定於操作系統的屬性。請參閱maven enforcer插件獲取有關操作系統值的更多詳細信息。

  • property:如果Maven檢測到相應的name=value 對的屬性(一個可以在pom.xml中通過 ${name}間接引用的值),則 profile 將被激活。

  • file:最後,可通過給定文件名對應文件的 existence 或者missing激活 profile

activation 元素並不是激活profile的唯一方式。 settings.xml文件的activeProfile 元素可能包含profile的id。它們也可以通過命令行,通過 -P 標誌後的逗號分隔列表(例如 -P test)顯式激活。

要查看哪個配置文件將在某個構建中激活,請使用maven-help-plugin

mvn help:active-profiles

屬性(Properties)

Maven properties是值占位符,類似於Ant中的properties。通過使用表示法 ${X},可以在POM中的任何位置訪問它們的值,其中 X 是屬性。它們有五種不同的形式,都可以從settings.xml文件中訪問:

  1. env.X: 在變數前面加上“env.”首碼,將返回shell的環境變數。例如,${env.PATH} 包含$path環境變數(在Windows中為%PATH%)。
  2. project.x: POM中.分路徑包含相應元素的值。例如:可通過 ${project.version}獲取1.0
  3. settings.x: settings.xml 中的.分路徑包含相應元素的值。例如可通過${settings.offline}得到false 值。
  4. Java 系統屬性: 所有屬性,可通過java.lang.System.getProperties() 獲取並可作為POM properties,比如 ${java.home}.
  5. x: 在某個 <properties />元素或者某個外部文件中設置, 其值可能被用作${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被激活的話,可通過POM訪問屬性${user.install}

倉庫(Repositories)

Repositories 是Maven用來填充構建系統的本地倉庫的遠程項目集合。Maven將其稱為插件和依賴項的正是來自該本地倉庫。不同的遠程倉庫可能包含不同的項目,profile激活的情況下,可以搜索它們以查找匹配的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>
  • releases, snapshots: 這些是針對每種類型的工件,Release 或snapshot的策略。有了這兩個集合,POM就有能力在單個倉庫中獨立於其他類型來更改每種類型的策略。例如,可能出於開發目的,可以決定只啟用snapshot下載。
  • enabled: true or false ,以確定是否為相應類型(releases or snapshots)啟用此倉庫。
  • updatePolicy: 此元素指定嘗試進行更新的頻率。Maven將本地POM的時間戳(存儲在倉庫的Maven元數據文件中)與遠程POM進行比較。選項為: always, daily (預設)、或者interval:X(其中X是以分鐘為單位的整數)或never
  • checksumPolicy: 當Maven將文件發佈到倉庫時,它還會發佈相應的校驗和文件。關於丟失或不正確的校驗和時,可以選擇 ignorefailwarn
  • layout: 在上面對倉庫的描述中,有人提到它們都遵循一個通用的佈局。這基本上是正確的。Maven2有一個預設的倉庫佈局;然而,Maven1.x有一個不同的佈局。使用此元素指定是default還是 legacy

插件倉庫(Plugin Repositories)

倉庫是兩種主要類型的工件的所在地。第一種是用作其他工件的依賴項的工件。這些是位於中心的大多數工件。另一種類型的工件是插件。Maven插件本身就是一種特殊類型的工件。正因為如此,插件倉庫可能會與其他倉庫分離(儘管,我還沒有聽到這樣做的令人信服的論據)。在任何情況下, pluginRepositories 元素塊的結構都類似於 repositories 元素。 pluginRepository元素分別指定Maven可以在其中查找新插件的遠程位置。

激活Profiles(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 元素。它包含一系列activeProfiles 元素,每個元素的值都有一個 profile id。任何定義為activeProfileprofile id 都將處於活動狀態,而與任何環境設置無關。如果沒有找到匹配的profile,則什麼也不會發生。例如,如果env-test為一個activeProfile,一個在具有相應idpom.xml(或profile.xml)將處於活動狀態。如果找不到這樣的profile,則執行將照常進行。

參考鏈接

https://maven.apache.org/settings.html

https://maven.apache.org/ref/3.9.3/maven-settings/settings.html

作者:授客
微信/QQ:1033553122
全國軟體測試QQ交流群:7156436

Git地址:https://gitee.com/ishouke
友情提示:限於時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞後如有任何疑問,請聯繫我!!!
           微信打賞                        支付寶打賞                  全國軟體測試交流QQ群  
              


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # Unity UGUI的LayoutElement(佈局元素)組件的介紹及使用 ## 1. 什麼是LayoutElement組件? LayoutElement是Unity UGUI中的一個佈局元素組件,用於控制UI元素在佈局中的大小和位置。它可以用於自動調整UI元素的大小,以適應不同的屏幕解析度和 ...
  • # shell腳本-入侵檢測與告警 ## 原理 利用inotifywait命令對一些重要的目錄作一個實施監控,例如:當/root 、/usr/bin 等目錄發生改變的,利用inotifywait看可以對其作一個監控作用。 ## inotifywait ### 介紹 inotifywait 是一個 L ...
  • 首先來看一下需要操作的函數,以及配置的步驟: 圖1 圖2 Code: usart.c #include "usart.h"void ustart_Init(void ){ GPIO_InitTypeDef GPIO_Init_Ustar ; // 定義輸出埠TX的結構體對象 USART_InitT ...
  • ## 一、mysql安裝 在配置Hive之前一般都需要安裝和配置MySQL,因為Hive為了能操作HDFS上的數據集,那麼他需要知道數據的切分格式,如行列分隔符,存儲類型,是否壓縮,數據的存儲地址等信息。 為了方便以後操作所以他需要將這些信息通過一張表存儲起來,然後將這張表(元數據)存儲到mysql ...
  • 【JavaScript寫法】數組去重 在進行項目開發的時候,有時候需要把一些前端的數組進行去重處理,得到一個去重後的數據,然後再進行相關的操作,這也是在前端面試中經常出現的問題 ...
  • - Vue 初始化 - 模板渲染 - 組件渲染 為了便於理解,本文將從以下兩個方面進行探索: - 從 Vue 初始化,到首次渲染生成 DOM 的流程。 - 從 Vue 數據修改,到頁面更新 DOM 的流程。 # Vue 初始化 先從最簡單的一段 Vue 代碼開始: """ {{ message }} ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 一、前言 常見的DDD實現架構有很多種,如經典四層架構、六邊形(適配器埠)架構、整潔架構(Clean Architecture)、CQRS架構等。架構無優劣高下之分,只要熟練掌握就都是合適的架構。本文不會逐個去講解這些架構,感興趣的讀者可以自行去瞭解。 本文將帶領大家從日常的三層架構出發,精煉推導 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...