1. 程式人生 > >關於Maven配置多倉庫

關於Maven配置多倉庫

maven配置多個倉庫

說明

maven的中央倉庫很強大,絕大多數的jar都收錄了。但也有未被收錄的。遇到未收錄的jar時,就會編譯報錯。  除了maven官方提供的倉庫之外,也有很多的倉庫。儘可能的將可信的倉庫(嗯,可信的倉庫!)新增幾個,彌補maven官方倉庫的不足。

多倉庫配置方式一:全域性多倉庫設定

全域性多倉庫設定,是通過修改maven的setting檔案實現的。  設定思路:在setting檔案中新增多個profile(也可以在一個profile中包含很多個倉庫),並激活(即使是隻有一個可用的profile,也需要啟用)。  修改maven的setting檔案,設定兩個倉庫(以此類推,可以新增多個):  


  <profiles>

    <profile>

        <!-- id必須唯一 -->

        <id>myRepository1</id>

        <repositories>

            <repository>

                <!-- id必須唯一 -->

                <id>myRepository1_1</id>

                <!-- 倉庫的url地址 -->

                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

                <releases>

                    <enabled>true</enabled>

                </releases>

                <snapshots>

                    <enabled>true</enabled>

                    <updatePolicy>always</updatePolicy>

                </snapshots>

            </repository>

        </repositories>

    </profile>

    <profile>

        <!-- id必須唯一 -->

        <id>myRepository2</id>

        <repositories>

            <repository>

                <!-- id必須唯一 -->

                <id>myRepository2_1</id>

                <!-- 倉庫的url地址 -->

                <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>

                <releases>

                    <enabled>true</enabled>

                </releases>

                <snapshots>

                    <enabled>true</enabled>

                    <updatePolicy>always</updatePolicy>

                </snapshots>

            </repository>

        </repositories>

    </profile>

  </profiles>

 

  <activeProfiles>

    <!-- 啟用myRepository1 -->

    <activeProfile>myRepository1</activeProfile>

    <!-- 啟用myRepository2 -->

    <activeProfile>myRepository2</activeProfile>

  </activeProfiles>

多倉庫配置方式二:在專案中新增多個倉庫

在專案中新增多個倉庫,是通過修改專案中的pom檔案實現的。  思路:在專案中pom檔案的repositories節點(如果沒有手動新增)下新增多個repository節點,每個repository節點是一個倉庫。  修改專案中pom檔案,設定兩個倉庫(以此類推,可以新增多個):  


    <repositories>

        <repository>

            <!-- id必須唯一 -->

            <id>jboss-repository</id>

            <!-- 見名知意即可 -->

            <name>jboss repository</name>

            <!-- 倉庫的url地址 -->

            <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>

        </repository>

        <repository>

            <!-- id必須唯一 -->

            <id>aliyun-repository</id>

            <!-- 見名知意即可 -->

            <name>aliyun repository</name>

            <!-- 倉庫的url地址 -->

            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

        </repository>

    </repositories>

 注:以上兩種方式的id值均不可以為“central”。


 

<?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>/Users/yourhome/.m2/repository</localRepository>

    <servers>

        <server>

            <id>snapshots</id>

            <username>snapshot</username>

            <password>deploy</password>

        </server>

        <server>

            <id>releases</id>

            <username>admin</username>

            <password>admin123</password>

        </server>

    </servers>

    <mirrors>

        <mirror>

            <id>nexus</id>

            <name>internal nexus repository</name>

            <url>http://192.168.11.111:8080/nexus/content/groups/public/</url>

            <mirrorOf>central</mirrorOf>

        </mirror>

        

	<mirror>

    		<id>nexus-aliyun</id>

   		<mirrorOf>*</mirrorOf>

   		<name>Nexus aliyun</name>

    		<url>http://maven.aliyun.com/nexus/content/groups/public</url>

    	</mirror>

    </mirrors>

    <profiles>

        <profile>

            <id>jdk-1.7</id>

            <activation>

                <activeByDefault>true</activeByDefault>

                <jdk>1.7</jdk>

            </activation>

            <properties>

                <maven.compiler.source>1.7</maven.compiler.source>

                <maven.compiler.target>1.7</maven.compiler.target>

                <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>

            </properties>

        </profile>

        <profile>

            <id>downloadSources</id>

            <properties>

                <downloadSources>true</downloadSources>

                <downloadJavadocs>true</downloadJavadocs>

            </properties>

        </profile>

        <profile>

            <id>nexus</id>

            <repositories>

                <repository>

                    <id>central</id>

                    <name>Nexus Central</name>

                    <url>http://192.168.11.111:8080/nexus/content/groups/public/</url>

                    <layout>default</layout>

                    <releases>

                        <enabled>true</enabled>

                    </releases>

                    <snapshots>

                        <enabled>true</enabled>

                    </snapshots>

                </repository>

            </repositories>

            <pluginRepositories>

                <pluginRepository>

                    <id>central</id>

                    <name>Nexus Central</name>

                    <url>http://192.168.11.111:8080/nexus/content/groups/public</url>

                    <layout>default</layout>

                    <snapshots>

                        <enabled>true</enabled>

                    </snapshots>

                    <releases>

                        <enabled>true</enabled>

                    </releases>

                </pluginRepository>

            </pluginRepositories>

        </profile>

        <profile>

            <id>jdk-1.8</id>

            <activation>

                <activeByDefault>true</activeByDefault>

                <jdk>1.8</jdk>

            </activation>

            <properties>

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

	<!-- 後期新增的-->

	<profile>

        <!-- id必須唯一 -->

        <id>aliyun</id>

        <repositories>

            <repository>

                <!-- id必須唯一 -->

                <id>myRepository1_1</id>

                <!-- 倉庫的url地址 -->

                <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

                <releases>

                    <enabled>true</enabled>

                </releases>

                <snapshots>

                    <enabled>true</enabled>

                    <updatePolicy>always</updatePolicy>

                </snapshots>

            </repository>

        </repositories>

    	</profile>

    </profiles>

 

    <activeProfiles>

	<!-- 後期新增的-->

	<activeProfile>aliyun</activeProfile>

        <activeProfile>nexus</activeProfile>

        <activeProfile>jdk-1.8</activeProfile>

        <activeProfile>downloadSources</activeProfile>

    </activeProfiles>

</settings>