美文网首页
maven配置

maven配置

作者: 会跳的八爪鱼 | 来源:发表于2022-04-08 10:31 被阅读0次
    1.maven仓库的加载顺序

    本地仓库 > setting.xml中的配置的仓库(在profile标签中设置的reposity)> pom
    文件中设置的profile > pom文件中的reposity > 中央仓库mirror >中央仓库
    note:mirror是仓库的代理如果需要从仓库中拉取jar包,会先寻找这个仓库对应的镜像,并从镜像中拉取,如果镜像中没有才会从仓库中拉取。所以镜像的与对应仓库在同一优先级,只是如果镜像存在的话会现在镜像中查找。
    这也是我通常安装好maven之后需要添加aliyun镜像的原因了,maven默认会有一个id为central的中央仓库,所以即使不配置reposity也没什么大问题。

    ##setting.xml
    <mirrors>
        <mirror>
            <id>aliyun</id>
            <name>aliyun</name>
            <mirrorOf>central</mirrorOf>
            <url>https://maven.aliyun.com/repository/central</url>
        </mirror>
    </mirrors>
    
    2.mirro server reposity的关系

    但是中央仓库不会包含所有的jar包,例如一些驱动包或者我们自己的jar包,这时候就需要在setting.xml或者pom中添加私服仓库或者第三方仓库,两种方式作用一样,只是setting.xml的优先级比较高


    仓库分类
    ##setting.xml setting.xml中的仓库在profile中设置,并利用activeProfiles激活,当然也可以设置激活条件,就这需要用到
      <profile>
          <id>nexus_profile</id>
          <repositories>
            <repository>
              <id>nexus_reposity</id>
              <name>Repository for JDK 1.4 builds</name>
              <url>http://192.168.1.1:8081/repository/maven-public/</url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
              <snapshotPolicy>always</snapshotPolicy>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <id>nexus_plugin_reposity</id>
              <name>Maven China Mirror</name>
              <url>http://192.168.1.1:8081/repository/maven-public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>false</enabled>
              </snapshots>    
            </pluginRepository>
          </pluginRepositories>
        </profile>
    <activeProfiles>
        <activeProfile>nexus_profile</activeProfile>
      </activeProfiles>
    ##pom.xml
        <pluginRepositories>
            <pluginRepository>
                <id>nexus2</id>
                <name>nexus</name>
                <url>http://192.168.1.1:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
        <repositories>
            <repository>
                <id>nexus</id>
                <name>nexus</name>
                <url>http://192.168.1.1:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    

    2.上面这种方式只是可以下载jar包,但是如果需要添加自己的私服,就需要在setting.xml文件中添加server信息(即maven deploy时需要的用户名密码),以及在pom文件中添加

    ##pom.xml
        <distributionManagement>
            <repository>
                <id>nexus-release</id>
                <name>NEXUS Release</name>
                <url>http://192.168.1.1:8081/repository/maven-snapshots/</url>
            </repository>
    
            <snapshotRepository>
                <id>nexus-snapshots</id>
                <name>NEXUS SNAPSHOTS</name>
                <url>http://192.168.1.1:8081/repository/maven-snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
    ##setting.xml
        <server>
            <id>nexus-release</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    

    需要注意server中的id必须要和distributionManagement中id相同。
    如果你想为一个第三方库添加镜像,需要先设置仓库信息,然后添加镜像信息

    <repositories>
        <repository>
            <id>A</id>
            <url>http://www.A.com/maven2</url>
        </repository>
    </repositories>
    <mirrors>
        <mirror>
            <id>B</id>
            <name>B Central</name>
            <url>http://www.B.com/maven2</url>
            <mirrorOf>A</mirrorOf>
        </mirror>
    </mirrors>
    

    profile标签可以添加激活条件,这样既可以根据项目设置不同的仓库,只需要添加activation标签

    • profile中定义的 properties键值对可以在pom.xml中使用,若有两个profile同时定义了一个属性hello,且这两个profile都被激活。那么后定义的profile会覆盖前面定义的profile属性,即在pom中使用的hello属性的值是后定义profile中的。
    • 使用默认激活方式时<activeByDefault>true</activeByDefault>,只有在没有有指定其他profile激活时才会生效。
    <profile>
          <id>jdk-1.4</id>
          <activation>
            <jdk>1.4</jdk>
          </activation>
          <!--此标签表示没有其他profile生效时生效-->
          <activeByDefault>true</activeByDefault>
          <properties>
            <name>test</name>
          </properties>
          <repositories>
            <repository>
              <id>jdk14</id>
              <name>Repository for JDK 1.4 builds</name>
              <url>http://www.myhost.com/maven/jdk14</url>
              <layout>default</layout>
              <snapshotPolicy>always</snapshotPolicy>
            </repository>
          </repositories>
       </profile>
    

    参照:Maven 仓库私服镜像加载顺序
    maven mirro reposity server的关系

    相关文章

      网友评论

          本文标题:maven配置

          本文链接:https://www.haomeiwen.com/subject/tqzesrtx.html