关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

配置 maven 镜像和私服(华为云 / 阿里云)

guanshanw 2023-09-19 13:14 16 浏览 0 评论

单独配置华为云 mirror

准备工作使用前请确保您已安装JDK及Maven。如果您尚未安装,可以点击下面链接下载安装:JDK官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.htmlMaven加速地址:https://repo.huaweicloud.com/apache/maven/maven-3/

使用说明点击此处 下载settings.xml文件,覆盖<Maven安装目录>/conf/settings.xml文件即可。如果您不想覆盖配置文件,可以手动在settings.xml文件中的mirrors节点中添加如下内容:

配置 maven 镜像和私服(华为云 / 阿里云)

<mirror>
    <id>huaweicloud</id>
    <mirrorOf>*</mirrorOf>
    <url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>

相关网址Maven官方地址:https://maven.apache.orgMaven搜索地址:http://mvnrepository.com

单独配置华为私有库依赖

1.在mirrors节点中添加如下配置:(可选,使用华为开源镜像站加速下载开源组件)

    <mirror>
        <id>z_mirrors</id>
        <mirrorOf>*,!releases,!snapshots</mirrorOf>
        <url>https://repo.huaweicloud.com/repository/maven/</url>
    </mirror>

2.在servers节点中添加如下配置:(password从下载的settings.xml文件中获取)


    <server>
        <id>releases</id>
        <username>088dbeef3980f4050f6fc007779eab60_088dbef03980f2d21f98c007dcbde04f</username>
        <password>************</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>088dbeef3980f4050f6fc007779eab60_088dbef03980f2d21f98c007dcbde04f</username>
        <password>************</password>
    </server>

3.在profiles节点中添加如下配置

    <profile>
        <id>MyProfile</id>
        <repositories>
            <repository>
                <id>releases</id>
                <url>https://devrepo.devcloud.cn-north-4.huaweicloud.com/07/nexus/content/repositories/088dbeef3980f4050f6fc007779eab60_1_0/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>snapshots</id>
                <url>https://devrepo.devcloud.cn-north-4.huaweicloud.com/07/nexus/content/repositories/088dbeef3980f4050f6fc007779eab60_2_0/</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>

单独配置阿里云 mirror

打开maven的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加mirror子节点:

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

如果想使用其它代理仓库,可在<repositories></repositories>节点中加入对应的仓库使用地址。以使用spring代理仓为例:

<repository>
    <id>spring</id>
    <url>https://maven.aliyun.com/repository/spring</url>
    <releases>
        <enabled>true</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

单独配置阿里云效私有库依赖

1.在mirrors节点中添加如下配置:(可选,使用阿里开源镜像站加速下载开源组件)

        <mirror>
            <id>mirror</id>
            <mirrorOf>!rdc-releases,!rdc-snapshots</mirrorOf>
            <url>https://maven.aliyun.com/repository/public</url>
        </mirror>
  1. 在settings.xml中添加认证信息
    在Maven的的默认settings.xml中找到servers的部分,添加一个server配置如下。
<servers>
    <server>
        <id>rdc-releases</id>
        <username>***</username>
        <password>******</password>
    </server>
    <server>
        <id>rdc-snapshots</id>
        <username>***</username>
        <password>******</password>
    </server>
</servers>

3.在profiles节点添加如下配置, 其中 repository 是顺序搜索下载包的.

<profile>
            <id>rdc-private-repo</id>
            <repositories>
                <repository>
                    <id>rdc-releases</id>
                    <url>https://repo.rdc.aliyun.com/repository/78947-release-CfzLQ7/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>rdc-snapshots</id>
                    <url>https://repo.rdc.aliyun.com/repository/78947-snapshot-XtuBsZ/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>rdc-releases</id>
                    <url>https://repo.rdc.aliyun.com/repository/78947-release-CfzLQ7/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>rdc-snapshots</id>
                    <url>https://repo.rdc.aliyun.com/repository/78947-snapshot-XtuBsZ/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
  1. 制品上传配置
    配置好了settings.xml后,在代码库根目录下的pom.xml加入以下配置:
<!-- 需要发布二方包 则打开下列的配置 -->
<distributionManagement>
    <repository>
        <id>rdc-releases</id>
        <url>https://repo.rdc.aliyun.com/repository/78947-release-CfzLQ7/</url>
    </repository>
    <snapshotRepository>
        <id>rdc-snapshots</id>
        <url>https://repo.rdc.aliyun.com/repository/78947-snapshot-XtuBsZ/</url>
    </snapshotRepository>
</distributionManagement>

然后运行以下命令即可将制品推送到私有仓库中:

$ mvn clean deploy -DskipTests

Maven中-DskipTests和-Dmaven.test.skip=true的区别在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip=true,这两个参数的主要区别是:

-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

关于 mirror 的说明

虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效,只有当前一个mirror无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做!

关于 properties 的说明

properties作用:对应profile的扩展属性列表。maven属性和ant中的属性一样,可以用来存放一些值。这些值可以在pom.xml中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。

<!-- 
  1. env.X: 在一个变量前加上"env."的前缀,会返回一个shell环境变量。例如,"env.PATH"指代了$path环境变量(在Windows上是%PATH%)。 
  2. project.x:指代了POM中对应的元素值。例如: <project><version>1.0</version></project>通过${project.version}获得version的值。 
  3. settings.x: 指代了settings.xml中对应元素的值。例如:<settings><offline>false</offline></settings>通过 ${settings.offline}获得offline的值。 
  4. Java System Properties: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问,例如 ${java.home}。 
  5. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。
 -->

<properties>
  <user.install>${user.home}/our-project</user.install>
</properties>

配置了 阿里和华为云配置的综合案例

<?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">
    <pluginGroups></pluginGroups>
    <proxies></proxies>
    <servers>
        <!-- 华为 rds -->
        <!-- id 需要和 settings profiles.profile.repository.id 和 project 下 distributionManagement.repository.id 保持一致,  -->
        <server>
            <id>huawei-rdc-repository</id>
            <username>****yourname***</username>
            <password>****yourpassword******</password>
        </server>
        <server>
            <id>huawei-rdc-snapshots-repository</id>
            <username>****yourname***</username>
            <password>****yourpassword******</password>
        </server>
        <!-- 阿里 rds -->
        <server>
            <id>aliyun-rdc-repository</id>
            <username>****yourname***</username>
            <password>****yourpassword******</password>
        </server>
        <server>
            <id>aliyun-rdc-snapshots-repository</id>
            <username>****yourname***</username>
            <password>****yourpassword******</password>
        </server>
        <!-- 宝利 rds -->
        <server>
            <id>poly-rdc-repository</id>
            <username>admin</username>
            <password>ncl@1234</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <id>huaweiMirror</id>
            <name>华为云公共仓库</name>
            <mirrorOf>central</mirrorOf>
            <url>https://repo.huaweicloud.com/repository/maven/</url>
        </mirror>
        <mirror>
            <id>aliyunMirror</id>
            <name>阿里云公共仓库</name>
            <mirrorOf>central</mirrorOf>
            <url>https://maven.aliyun.com/repository/public</url>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <id>default-profile</id>
            <properties>
                <my.repository.url>https://maven.aliyun.com/nexus/content/groups/public</my.repository.url>
            </properties>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>${my.repository.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>snapshots</id>
                    <url>${my.repository.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>${my.repository.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>snapshots</id>
                    <url>${my.repository.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>huawei-profile</id>
            <properties>
                <my.releases.url>https://devrepo.devcloud.cn-north-4.huaweicloud.com/07/nexus/content/repositories/088dbeef3980f4050f6fc007779eab60_1_0/</my.releases.url>
                <my.snapshots.url>https://devrepo.devcloud.cn-north-4.huaweicloud.com/07/nexus/content/repositories/088dbeef3980f4050f6fc007779eab60_2_0/</my.snapshots.url>
            </properties>
            <repositories>
                <repository>
                    <id>huawei-rdc-repository</id>
                    <url>${my.releases.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>huawei-rdc-snapshots-repository</id>
                    <url>${my.snapshots.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>huawei-rdc-repository</id>
                    <url>${my.releases.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>huawei-rdc-snapshots-repository</id>
                    <url>${my.snapshots.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>aliyun-profile</id>
            <properties>
                <my.releases.url>https://repo.rdc.aliyun.com/repository/78947-release-CfzLQ7/</my.releases.url>
                <my.snapshots.url>https://repo.rdc.aliyun.com/repository/78947-snapshot-XtuBsZ/</my.snapshots.url>
            </properties>
            <repositories>
                <repository>
                    <id>aliyun-rdc-repository</id>
                    <url>${my.releases.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>aliyun-rdc-snapshots-repository</id>
                    <url>${my.snapshots.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>aliyun-rdc-repository</id>
                    <url>${my.releases.url}</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>aliyun-rdc-snapshots-repository</id>
                    <url>${my.snapshots.url}</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <profile>
            <id>poly-profile</id>
            <repositories>
                <!-- <repository><id>poly-repository</id><name>private maven</name><url>http://10.1.103.106:9080/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository> -->
            </repositories>
            <pluginRepositories>
                <!-- <pluginRepository><id>poly-repository</id><name>private maven</name><url>http://10.1.103.106:9080/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository> -->
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>default-profile</activeProfile>
        <!-- <activeProfile>huawei-profile</activeProfile> -->
        <activeProfile>aliyun-profile</activeProfile>
        <!-- <activeProfile>poly-profile</activeProfile> -->
    </activeProfiles>
</settings>

相关地址

https://mirrors.huaweicloud.com/

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: