searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

maven设置远程仓库、镜像仓库、远程仓库认证信息

2024-06-27 10:19:02
29
0

maven配置文件settings.xml中的servers、mirrors和profiles的配置。

总结

mirror的mirrorOf属性要指定为在profile中设置好的远程仓库的id。通过mirrorOf来指定需要复制的仓库,也可以将mirrorOf配置为*来复制所有仓库;如果远程仓库需要认证,才需要为镜像仓库配置server,设置账密,server的id需要与相应的mirror的id一致。

profiles配置

settings.xml中你可以配置多个profile,但必须激活它们才会生效。

<!--激活了才生效-->
  <activeProfiles>
    <activeProfile>cdn</activeProfile>
  </activeProfiles>

下面配置了一个profile,该profile指定了两个repository:id为my_repository1和my_repository2

<profiles>
    <profile>
      <id>cdn</id>
        
      <repositories>
        <repository>
          <id>my_repository1</id>
          <name>my repository1</name>
          <url>mymymy.com/nexus/repository/my_repository1/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
        <repository>
          <id>my_repository2</id>
          <name>my repository2</name>
          <url>mymymy.com/nexus/repository/my_repository2/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
      </repositories>
    </profile>
  </profiles>

配置了profile并激活,该profile指定的repository就生效了。

配置好的profile在IDEA的maven窗口可见

image-20230906102210374

只配置远程repository的话,每一次下载依赖都得连接到远程repository。maven还可以为远程repository创建一个镜像放在本地,以方便使用。

mirrors配置

镜像配置说明:

  • id: 镜像的唯一标识;
  • name: 名称描述;
  • url: 地址;
  • mirrorOf: 指定仓库id,对哪些仓库的请求优先从该镜像拉取依赖。其中,*匹配所有,所有仓库的请求都优先从该镜像拉取;

使用mirrorOf属性指定该镜像仓库是哪个远程repository的镜像。例如,前面配置了my_repository1和my_repository2两个repository,为其配置镜像:mirror下的id可随意,唯一即可;mirrorOf则需要指定为repository的id,url指定为repository的url。

<mirrors>
    <mirror>
        <id>my_repository1_mirror</id>
        <name>my repository1 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository1/</url>
        <mirrorOf>my_repository1</mirrorOf>
    </mirror> 
    <mirror>
        <id>my_repository2_mirror</id>
        <name>my repository2 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository2/</url>
        <mirrorOf>my_repository2</mirrorOf>
    </mirror>
  </mirrors>

servers配置

如果远程repository需要认证,则需要为镜像仓库配置认证信息。通过server标签来配置,serverId为镜像的id,与指定的镜像仓库绑定。在这里指定为上面配置的两个mirror:my_repository1_mirror、my_repository2_mirror,username/password填充认证信息。

<servers>
    
    <server>
      <id>my_repository1_mirror</id>
      <username>sys</username>
      <password>>**********</</password>
    </server>
      
    <server>
      <id>my_repository2_mirror</id>
      <username>sys</username>
      <password>**********</password>
    </server>
    
  </servers>

项目不需要配置仓库地址

**在maven的settings.xml设置好server、mirror、repository,就不需要在项目的pom文件中设置仓库地址了,**​如果在项目的pom文件中设置了仓库,则使用项目中的仓库,settings.xml配置的repository不起作用​。

<repositories>
        <repository>
            <id>repository</id>
            <name>Maven Repository</name>
            <url>maven.aliyun.com/repository/public/</url>
        </repository>
    </repositories>

示例

<servers> 
    <server>
      <id>my_repository1_mirror</id>
      <username>sys</username>
      <password>>**********</</password>
    </server>
    <server>
      <id>my_repository2_mirror</id>
      <username>sys</username>
      <password>**********</password>
    </server>
  </servers>
      
      
   <mirrors>
    <mirror>
        <id>my_repository1_mirror</id>
        <name>my repository1 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository1/</url>
        <mirrorOf>my_repository1</mirrorOf>
    </mirror>
    <mirror>
        <id>my_repository2_mirror</id>
        <name>my repository2 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository2/</url>
        <mirrorOf>my_repository2</mirrorOf>
    </mirror>
  </mirrors>
      
      
<profiles>
    
    <profile>
      <id>cdn</id>
        
      <repositories>
        <repository>
          <id>my_repository1</id>
          <name>my repository1</name>
          <url>mymymy.com/nexus/repository/my_repository1/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
        <repository>
          <id>my_repository2</id>
          <name>my repository2</name>
          <url>mymymy.com/nexus/repository/my_repository2/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
      </repositories>
    </profile>
  </profiles>
      
  <!--激活了才生效-->
  <activeProfiles>
    <activeProfile>cdn</activeProfile>
  </activeProfiles>
0条评论
0 / 1000
don
5文章数
0粉丝数
don
5 文章 | 0 粉丝
原创

maven设置远程仓库、镜像仓库、远程仓库认证信息

2024-06-27 10:19:02
29
0

maven配置文件settings.xml中的servers、mirrors和profiles的配置。

总结

mirror的mirrorOf属性要指定为在profile中设置好的远程仓库的id。通过mirrorOf来指定需要复制的仓库,也可以将mirrorOf配置为*来复制所有仓库;如果远程仓库需要认证,才需要为镜像仓库配置server,设置账密,server的id需要与相应的mirror的id一致。

profiles配置

settings.xml中你可以配置多个profile,但必须激活它们才会生效。

<!--激活了才生效-->
  <activeProfiles>
    <activeProfile>cdn</activeProfile>
  </activeProfiles>

下面配置了一个profile,该profile指定了两个repository:id为my_repository1和my_repository2

<profiles>
    <profile>
      <id>cdn</id>
        
      <repositories>
        <repository>
          <id>my_repository1</id>
          <name>my repository1</name>
          <url>mymymy.com/nexus/repository/my_repository1/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
        <repository>
          <id>my_repository2</id>
          <name>my repository2</name>
          <url>mymymy.com/nexus/repository/my_repository2/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
      </repositories>
    </profile>
  </profiles>

配置了profile并激活,该profile指定的repository就生效了。

配置好的profile在IDEA的maven窗口可见

image-20230906102210374

只配置远程repository的话,每一次下载依赖都得连接到远程repository。maven还可以为远程repository创建一个镜像放在本地,以方便使用。

mirrors配置

镜像配置说明:

  • id: 镜像的唯一标识;
  • name: 名称描述;
  • url: 地址;
  • mirrorOf: 指定仓库id,对哪些仓库的请求优先从该镜像拉取依赖。其中,*匹配所有,所有仓库的请求都优先从该镜像拉取;

使用mirrorOf属性指定该镜像仓库是哪个远程repository的镜像。例如,前面配置了my_repository1和my_repository2两个repository,为其配置镜像:mirror下的id可随意,唯一即可;mirrorOf则需要指定为repository的id,url指定为repository的url。

<mirrors>
    <mirror>
        <id>my_repository1_mirror</id>
        <name>my repository1 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository1/</url>
        <mirrorOf>my_repository1</mirrorOf>
    </mirror> 
    <mirror>
        <id>my_repository2_mirror</id>
        <name>my repository2 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository2/</url>
        <mirrorOf>my_repository2</mirrorOf>
    </mirror>
  </mirrors>

servers配置

如果远程repository需要认证,则需要为镜像仓库配置认证信息。通过server标签来配置,serverId为镜像的id,与指定的镜像仓库绑定。在这里指定为上面配置的两个mirror:my_repository1_mirror、my_repository2_mirror,username/password填充认证信息。

<servers>
    
    <server>
      <id>my_repository1_mirror</id>
      <username>sys</username>
      <password>>**********</</password>
    </server>
      
    <server>
      <id>my_repository2_mirror</id>
      <username>sys</username>
      <password>**********</password>
    </server>
    
  </servers>

项目不需要配置仓库地址

**在maven的settings.xml设置好server、mirror、repository,就不需要在项目的pom文件中设置仓库地址了,**​如果在项目的pom文件中设置了仓库,则使用项目中的仓库,settings.xml配置的repository不起作用​。

<repositories>
        <repository>
            <id>repository</id>
            <name>Maven Repository</name>
            <url>maven.aliyun.com/repository/public/</url>
        </repository>
    </repositories>

示例

<servers> 
    <server>
      <id>my_repository1_mirror</id>
      <username>sys</username>
      <password>>**********</</password>
    </server>
    <server>
      <id>my_repository2_mirror</id>
      <username>sys</username>
      <password>**********</password>
    </server>
  </servers>
      
      
   <mirrors>
    <mirror>
        <id>my_repository1_mirror</id>
        <name>my repository1 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository1/</url>
        <mirrorOf>my_repository1</mirrorOf>
    </mirror>
    <mirror>
        <id>my_repository2_mirror</id>
        <name>my repository2 mirror</name>
        <url>mymymy.com/nexus/repository/my_repository2/</url>
        <mirrorOf>my_repository2</mirrorOf>
    </mirror>
  </mirrors>
      
      
<profiles>
    
    <profile>
      <id>cdn</id>
        
      <repositories>
        <repository>
          <id>my_repository1</id>
          <name>my repository1</name>
          <url>mymymy.com/nexus/repository/my_repository1/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
        <repository>
          <id>my_repository2</id>
          <name>my repository2</name>
          <url>mymymy.com/nexus/repository/my_repository2/</url>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
          <releases>
              <enabled>true</enabled>
          </releases>
          <layout>default</layout>
        </repository>
          
      </repositories>
    </profile>
  </profiles>
      
  <!--激活了才生效-->
  <activeProfiles>
    <activeProfile>cdn</activeProfile>
  </activeProfiles>
文章来自个人专栏
java程序
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0