您现在的位置是:首页 >其他 >maven添加指定仓库和镜像网站首页其他

maven添加指定仓库和镜像

Langkaixin 2024-08-23 00:01:03
简介maven添加指定仓库和镜像

maven历史版本下载地址:https://archive.apache.org/dist/maven/maven-3/
maven版本和java版本的关系:https://maven.apache.org/docs/history.html

项目中添加仓库

有两种方式
1.在pom.xml中添加(优先级高)
2.在setting.xml中添加

在pom.xml中添加

<!--声明一个或多个远程仓库  -->
<repositories>
    <!-- 声明一个 Nexus 私服上的仓库  -->
    <repository>
        <!--仓库id  -->
        <id>nexus_id</id>
        <!-- 仓库的名称 -->
        <name>nexus_name</name>
        <!--仓库的地址  -->
        <url>nexus_repository_url</url>
        <!-- 是否开启该仓库的 release 版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<!-- 声明一个或多个远程插件仓库 -->
<pluginRepositories>
    <!--声明一个 Nexus 私服上的插件仓库  -->
    <pluginRepository>
        <!--插件仓库 id -->
        <id>nexus_id</id>
        <!--插件仓库 名称 -->
        <name>nexus_name</name>
        <!-- 配置的插件仓库的地址 -->
        <url>nexus_repository_url</url>
        <!-- 是否开启该插件仓库的 release 版本下载支持 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

在setting.xml中添加

<profiles>
    <profile>
        <id>nexus</id>
        <!--声明一个或多个远程仓库  -->
        <repositories>
            <!-- 声明一个 Nexus 私服上的仓库  -->
            <repository>
                <!--仓库id  -->
                <id>nexus_id</id>
                <!-- 仓库的名称 -->
                <name>nexus_name</name>
                <!--仓库的地址  -->
                <url>nexus_repository_url</url>
                <!-- 是否开启该仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <!-- 声明一个或多个远程插件仓库 -->
        <pluginRepositories>
            <!--声明一个 Nexus 私服上的插件仓库  -->
            <pluginRepository>
                <!--插件仓库 id -->
                <id>nexus_id</id>
                <!--插件仓库 名称 -->
                <name>nexus_name</name>
                <!-- 配置的插件仓库的地址 -->
                <url>nexus_repository_url</url>
                <!-- 是否开启该插件仓库的 release 版本下载支持 -->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <!-- 是否开启该插件仓库的 snapshot 版本下载支持 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>nexus_id</activeProfile>
</activeProfiles>

项目下载依赖的顺序

在这里插入图片描述

怎么理解mirrorof

在setting.xml中声明镜像

<mirrors>
    <mirror>
        <id>xx</id>
        <name>xx</name>
        <mirrorOf>*</mirrorOf>
        <url>http://ip:port/nexus/xx</url>
    </mirror>
</mirrors>

mirrorOf其实就是拦截条件
比如one.jar依赖,本来要去仓库A才能下载,但当镜像中的mirrorOf为仓库A,则会跳转到镜像xx的地址http://ip:port/nexus/xx中去找该依赖,而不会再去仓库A中找

部署依赖到 Nexus

1.配置项目的 POM 文件。

<project>
    ...
    <distributionManagement>
        <repository>
            <id>repository_id1</id>
            <url>http://ip1:port1/xxxxxx</url>
        </repository>
        <snapshotRepository>
            <id>repository_id2</id>
            <url>http://ip2:port2/xxxxxx</url>
        </snapshotRepository>
    </distributionManagement>
</project>

2.在 setting.xml 中配置认证信息。

<settings>
    ...
    <servers>
        <server>
            <id>repository_id1</id>  <!--和pom.xml中的id保持一致-->
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>repository_id2</id>  <!--和pom.xml中的id保持一致-->
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
</settings>

3.使用 mvn 命令部署构件。
mvn deploy

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。