Home Maven连接私服如何配置
Post
Cancel

Maven连接私服如何配置

Maven的setting.xml文件配置,该配置中使用了一个id为nexusProfile的profile,这个profile包含了相关的仓库配置,同时配置中又使用了activeProfile元素将这个profile激活,这样当执行Maven构件的时候,激活的profile会将仓库配置应用到项目中去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<profiles>
    <profile>
        <!-- profile的id -->
        <id>nexusProfile</id>

        <repositories>
            <repository>
                <!-- 仓库id,repositories可以配置多个仓库,保证id不重复 -->
                <id>nexus</id>
                <!-- 仓库地址,即Nexus仓库组的地址 -->
                <url>http://nexus.m2plat.cn/repository/maven-public/</url>

                <!-- 是否下载releases构件 -->
                <releases>
                    <enabled>true</enabled>
                </releases>

                <!-- 是否下载snapshots构件 -->
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>

        <pluginRepositories>
            <!-- 插件仓库,Maven的运行依赖插件,也需要从私服下载插件 -->
            <pluginRepository>
                <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
                <id>nexus</id>
                <url>http://nexus.m2plat.cn/repository/maven-public/</url>

                <releases>
                    <enabled>true</enabled>
                </releases>
                
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                    <checksumPolicy>warn</checksumPolicy>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>nexusProfile</activeProfile>
</activeProfiles>

配置镜像让Maven只使用私服,配置后本机所有的Maven项目都会从Nexus私服下载构件:

1
2
3
4
5
6
7
8
9
10
<!-- Maven对全部仓库的访问全部拦截到私服的public仓库中去 -->
<!-- 如果私服关闭,那么就不能访问中央工厂了-->
<mirrors>
    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <name>Local Repository</name>
        <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
    </mirror>
</mirrors>

配置Maven部署构件到Nexus:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 项目部署到私服配置 -->
<distributionManagement> <!-- 远程部署管理信息 -->
    <repository> <!-- 部署项目产生的构件到远程仓库需要的信息 -->
        <id>releases</id>
        <name>Nexus Release Repository</name>
        <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository> <!-- 如果没有配置该元素,默认部署到repository元素配置的仓库 -->
        <id>snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>  

Nexus仓库对匿名用户是只读的,所以为了能够部署构件,还需要在setting.xml文件中配置认证信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--私服的验证信息-->
<servers>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

配置好以后,就可以通过Maven的deploy命令,将项目的jar包部署到Nexus上,供其他项目组模块使用。大大加快了项目组的开发效率。

参考:
为什么要用远程仓库(私服)
maven 私服的使用及settings.xml的配置

This post is licensed under CC BY 4.0 by the author.