maven settings.xml配置簡述
頂層元素概述:
localRepository:本地倉庫路徑
interactiveMode:是否需要使用者互動(預設true)
usePluginRegistry:maven是否使用當前的工作目錄下的(如/maven-guide-zh-to-production/workspace/.m2/plugin-registry.xml)來管理外掛版本,預設false。
offline:是否支援離線模式(斷網,連不了遠端倉庫,預設false。
pluginGroups:當pom.xml引入依賴時沒宣告groupId就會預設使用(如<pluginGroup>org.codehaus.mojo</pluginGroup>)。
伺服器:
settings.xml可配置如下:
<servers>
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>123456</password>
</server>
<server>
<id>
nexus-snapshots</id><username>deployment</username>
<password>123456</password>
</server>
</servers>
然後在對應pom.xml中定義如下(與上面的id對應):
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://nexus.xxx.com:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
</snapshotRepository>
</distributionManagement>
映象:
settings.xml配置如下:
<mirrors>
<mirror>
<name>PlanetMirror Australia</name>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
注:id映象唯一識別符號,url映象url,mirrorOf與中央倉庫的id central一致。
代理:
settings.xml配置如下:
<proxies>
<proxy>
<id>myproxy</id>
<active>true</active>
<protocol>http</protocol>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
</proxy>
</proxies>
注:id代理唯一識別符號,active是否啟用代理(當有多個代理時,使用第一個設定為true),host代理的主機,nonProxyHosts不被代理的地址。
Profiles:
只關心構建系統整體,含 activation、repositories、pluginRepositories、properties 元素
啟用(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>hello</name>
<value>world</value>
</property>
<file>
<exists>D:/file2.properties</exists>
<missing>D:/file1.properties</missing>
</file>
</activation>
...
</profile>
</profiles>
注:id唯一識別符號(這裡可看成測試環境),activeByDefault為false表不自動啟用,需要滿足jdk、os、property、file(是否存在/不存在判斷)四個條件才啟用(四個條件均是可選)。
如jdk、os、file均符合執行以下則啟用:
mvn compile –Dhello=world
屬性(Properties):
如果profile被啟用,裡面設定的屬性可在任何pom.xml用 ${user.install}訪問:
<profile>
...
<properties>
<user.install>D:/test</user.install>
</properties>
...
</profile>
倉庫(Repositories):
<repositories>
<repository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
啟用Profiles:
settings.xml中設定啟用如下:
...
<activeProfiles>
<activeProfile>test</activeProfile>
</activeProfiles>
</settings>