1. 程式人生 > >maven settings.xml配置簡述

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>