日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven中settings.xml的配置项说明

發(fā)布時間:2025/3/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven中settings.xml的配置项说明 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.Maven的setting配置文件 和 在Eclipse中對Maven的正確配置。

1.Maven的配置文件(Maven的安裝目錄/conf/settings.xml ) 和 Maven倉庫下(默認的Maven倉庫的是用戶家目錄下的.m2文件,可以另行制定)的settings.xml文件

在Maven中提供了一個settings.xml文件來定義Maven的全局環(huán)境信息。這個文件會存在于Maven的安裝目錄的conf子目錄下面,或者是用戶家目錄的.m2子目錄下面。我們可以通過這個文件來定義本地倉庫、遠程倉庫和聯(lián)網(wǎng)使用的代理信息等。

其實相對于多用戶的PC機而言,在Maven安裝目錄的conf子目錄下面的settings.xml才是真正的全局的配置。而用戶家目錄的.m2子目錄下面的settings.xml的配置只是針對當前用戶的

當這兩個文件同時存在的時候,那么對于相同的配置信息用戶家目錄下面的settings.xml中定義的會覆蓋Maven安裝目錄下面的settings.xml中的定義。

用戶家目錄下的settings.xml文件一般是不存在的,但是Maven允許我們在這里定義我們自己的settings.xml,如果需要在這里定義我們自己的settings.xml的時候就可以把Maven安裝目錄下面的settings.xml文件拷貝到用戶家目錄的.m2目錄下,然后改成自己想要的樣子。

2.在Eclipse中正確的配置Maven(此處我的Maven倉庫由默認的用戶家目錄下的.m2文件改成了F:\Development\m2\repository)

博客園編輯器對圖片的顯示有壓縮,看高清大圖請點擊:http://images2017.cnblogs.com/blog/610238/201710/610238-20171014114125668-433293838.png

?

二.settings.xml文件中對應的配置項

?先來看看一個基本的settings.xml文件中的內(nèi)容:(如果使用默認的settings.xml文件很多配置多都注釋掉了,只有一個<localRepository>,此處該settings.xml文件進行了一些其他配置)

<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>D:\\develop\\mavenRepository</localRepository><interactiveMode>true</interactiveMode><offline>false</offline><pluginGroups></pluginGroups><proxies><proxy><id>optional</id><active>true</active><protocol>http</protocol><username>proxyuser</username><password>proxypass</password><host>proxy.host.net</host><port>80</port><nonProxyHosts>local.net|some.host.com</nonProxyHosts></proxy></proxies><servers><server><id>deploymentRepo</id><username>repouser</username><password>repopwd</password></server></servers><mirrors><mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://my.repository.com/repo/path</url></mirror></mirrors><profiles><profile><id>jdk-1.5</id><activation><jdk>1.5</jdk></activation><repositories><repository><id>jdk15</id><name>jdk1.5</name><url>http://www.myhost.com/maven/jdk15</url><layout>default</layout><snapshotPolicy>always</snapshotPolicy></repository></repositories></profile></profiles><activeProfiles><activeProfile>jdk-1.5</activeProfile></activeProfiles> </settings>

settings.xml中主要包括以下元素:

1.localRepository

表示Maven用來在本地儲存信息的本地倉庫的目錄。默認是用戶家目錄下面的.m2/repository目錄。

2.interactiveMode

表示是否使用交互模式,默認是true;如果設為false,那么當Maven需要用戶進行輸入的時候,它會使用一個默認值。

3.offline

表示是否離線,默認是false。這個屬性表示在Maven進行項目編譯和部署等操作時是否允許Maven進行聯(lián)網(wǎng)來下載所需要的信息。

4.pluginGroups

在pluginGroups元素下面可以定義一系列的pluginGroup元素。表示當通過plugin的前綴來解析plugin的時候到哪里尋找。pluginGroup元素指定的是plugin的groupId。默認情況下,Maven會自動把org.apache.maven.plugins和org.codehaus.mojo添加到pluginGroups下。

5.proxies

其下面可以定義一系列的proxy子元素,表示Maven在進行聯(lián)網(wǎng)時需要使用到的代理。當設置了多個代理的時候第一個標記active為true的代理將會被使用。下面是一個使用代理的例子:

<proxies><proxy><id>xxx</id><active>true</active><protocol>http</protocol><username>用戶名</username><password>密碼</password><host>代理服務器地址</host><port>代理服務器的端口</port><nonProxyHosts>不使用代理的主機</nonProxyHosts></proxy> </proxies>

6.servers

其下面可以定義一系列的server子元素,表示當需要連接到一個遠程服務器的時候需要使用到的驗證方式。這主要有username/password和privateKey/passphrase這兩種方式。以下是一個使用servers的示例:

<servers><server><id>id</id><username>用戶名</username><password>密碼</password></server></servers>

7.mirrors

用于定義一系列的遠程倉庫的鏡像。我們可以在pom中定義一個下載工件的時候所使用的遠程倉庫。但是有時候這個遠程倉庫會比較忙,所以這個時候人們就想著給它創(chuàng)建鏡像以緩解遠程倉庫的壓力,也就是說會把對遠程倉庫的請求轉(zhuǎn)換到對其鏡像地址的請求。每個遠程倉庫都會有一個id,這樣我們就可以創(chuàng)建自己的mirror來關聯(lián)到該倉庫,那么以后需要從遠程倉庫下載工件的時候Maven就可以從我們定義好的mirror站點來下載,這可以很好的緩解我們遠程倉庫的壓力。在我們定義的mirror中每個遠程倉庫都只能有一個mirror與它關聯(lián),也就是說你不能同時配置多個mirror的mirrorOf指向同一個repositoryId。

看以下是一個使用mirrors的例子:

<mirrors><mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>定義一個容易看懂的名稱 </name><url>http://my.repository.com/repo/path</url></mirror> </mirrors>

  1> id:

  是用來區(qū)別mirror的,所有的mirror不能有相同的id

  2> mirrorOf:

   用來表示該mirror是關聯(lián)的哪一個倉庫,其值為其關聯(lián)倉庫的id。當要同時關聯(lián)多個倉庫時,這多個倉庫之間可以用逗號隔開;當要關聯(lián)所有的倉庫時,可以使用“*”表示;當要關聯(lián)除某一個倉庫以外的其他所有倉庫時,可以表示為“*,!repositoryId”;當要關聯(lián)不是localhost或用file請求的倉庫時,可以表示為“external:*”。

  3> url:

  表示該鏡像的url。當Maven在建立系統(tǒng)的時候就會使用這個url來連接到我們的遠程倉庫。

8.profiles

用于指定一系列的profile。profile元素由activation、repositories、pluginRepositories和properties四個元素組成。當一個profile在settings.xml中是處于活動狀態(tài)并且在pom.xml中定義了一個相同id的profile時,settings.xml中的profile會覆蓋pom.xml中的profile。

  1> activation:

  這是profile中最重要的元素。跟pom.xml中的profile一樣,settings.xml中的profile也可以在特定環(huán)境下改變一些值,而這些環(huán)境是通過activation元素來指定的。

???????看下面一個例子:

<profiles><profile><id>test</id><activation><activeByDefault>false</activeByDefault><jdk>1.6</jdk><os><name>Windows 7</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>

在上面這段代碼中,當所有的約束條件都滿足的時候就會激活這個profile。

jdk:表示當jdk的版本滿足條件的時候激活,在這里是1.6。這里的版本還可以用一個范圍來表示,如

<jdk>[1.4,1.7)</jdk>表示1.4、1.5和1.6滿足;

<jdk>[1.4,1.7]</jdk>表示1.4、1.5、1.6和1.7滿足;

os:表示當操作系統(tǒng)滿足條件的時候激活。

property:property是鍵值對的形式,表示當Maven檢測到了這樣一個鍵值對的時候就激活該profile。

①下面的示例表示當存在屬性hello的時候激活該profile。

<property><name>hello</name> </property>

②下面的示例表示當屬性hello的值為world的時候激活該profile。

<property><name>hello</name><value>world</value> </property>

這個時候如果要激活該profile的話,可以在調(diào)用Maven指令的時候加上參數(shù)hello并指定其值為world,如:mvn compile –Dhello=world

  2>file:

  表示當文件存在或不存在的時候激活,exists表示存在,missing表示不存在。如下面的例子表示當文件hello/world不存在的時候激活該profile。

<profile><activation><file><missing>hello/world</missing></file></activation> </profile>

  3>activeByDefault:

  當其值為true的時候表示如果沒有其他的profile處于激活狀態(tài)的時候,該profile將自動被激活。

  4>properties:

  用于定義屬性鍵值對的。當該profile是激活狀態(tài)的時候,properties下面指定的屬性都可以在pom.xml中使用。

  5>repositories:

  用于定義遠程倉庫的,當該profile是激活狀態(tài)的時候,這里面定義的遠程倉庫將作為當前pom的遠程倉庫。

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

  releases、snapshots:這是對于工件的類型的限制。

  enabled:表示這個倉庫是否允許這種類型的工件

  updatePolicy:表示多久嘗試更新一次。可選值有always、daily、interval:minutes(表示每多久更新一次)和never。

  checksumPolicy:當Maven在部署項目到倉庫的時候會連同校驗文件一起提交,checksumPolicy表示當這個校驗文件缺失或不正確的時候該如何處理,可選項有ignore、fail和warn。

? ? ? ?6>pluginRepositories:

  在Maven中有兩種類型的倉庫,一種是存儲工件的倉庫,另一種就是存儲plugin插件的倉庫。pluginRepositories的定義和repositories的定義類似,它表示Maven在哪些地方可以找到所需要的插件。

9.activeProfiles

底包含一系列的activeProfile元素,表示對于所有的pom都處于活躍狀態(tài)的profile。如:

<activeProfiles><activeProfile>alwaysActiveProfile</activeProfile><activeProfile>anotherAlwaysActiveProfile</activeProfile></activeProfiles>

?本文部分引用自:http://haohaoxuexi.iteye.com/blog/1827778

轉(zhuǎn)載于:https://www.cnblogs.com/DreamDrive/p/5571916.html

總結

以上是生活随笔為你收集整理的Maven中settings.xml的配置项说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。