大话 Maven 系列笔记(四)——Maven仓库

2021/6/27 23:20:40

本文主要是介绍大话 Maven 系列笔记(四)——Maven仓库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第四章、Maven仓库

 

maven使用的仓库有以下几种

1、中央仓库:这是默认仓库

2、镜像仓库:通过setting.xml中的settings.mirrors.mirror配置

3、全局profile仓库:通过setting.xml中的settings.repositories.repository配置

4、项目仓库:通过pom.xml中的project.repositories.repository配置

5、项目profile仓库:通过pom.xml中的project.profiles.profile.repositories.repository配置

6、本地仓库

 

搜索顺序如下(优先级)

local_repo > settings_profile_repo > pom_profile_repo > pom_repositorys > settings.mirrors > central

翻译成中文:

本地仓库 > setting中的多环境 > pom中的多环境 > pom中的全局 > setting中的镜像 > 中央仓库

 

1、本地仓库

本地仓库(本机仓库): 位于你自己的计算机, 它是磁盘中的某个目录。本地仓库:默认路径,是你登录操作系统的账号的目录中/.m2/repository

C:\Users\NING MEI\.m2\repository

修改本地仓库的位置:修改maven工具的配置文件(maven的安装路径\conf\setting.xml)

步骤:

1)创建一个目录,作为仓库使用。 目录不要有中文和空格。 目录不要太深。

例如: D:\openrepository

2)修改setting.xml文件,指定 D:\openrepository这个目录

<localRepository>D:/openrepository</localRepository>

 

2、远程仓库

(1)私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务

(2)中央仓库:假设在Internet上,为全世界所有Maven工程服务

(3)中央仓库镜像:为了分担中央仓库流量,提升用户访问速度

 

2.1、中央仓库

中央仓库是默认的的远程仓库,Maven在安装的时候,自带的就是中央仓库的配置。

所有的Maven都会继承超级POM,超级POM种包含如下配置:

<repositories> 
    <repository> 
        <id>central</id> 
        <name>Cntral Repository</name> 
        <url>http://repo.maven.apache.org</url> 
        <layout>default</layout> 
        
        <snapshots> 
            <enabled>false</enabled> 
        </snapshots> 
    </repository> 
 </repositories> 

中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。 还可以在里面配置优先使用的镜像,比如在国内直接连中央仓库速度较慢,一般使用阿里云的镜像仓库。

<mirrors> 
    <!--镜像--> 
    <mirror> 
        <id>alimaven</id> 
        <!--被镜像的服务器ID--> 
        <mirrorOf>central</mirrorOf> 
        <name>aliyun maven</name> 
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
    </mirror>    
</mirrors> 

 

2.2、私服

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

maven 在默认情况下是从中央仓库下载构建,也就是 id 为 central 的仓库。如果没有特殊需求,一般只需要将私服地址配置为镜像,同时配置其代理所有的仓库就可以实现通过私服下载依赖的功能。镜像配置如下:

<mirror> 
    <id>Nexus Mirror</id> 
    <name>Nexus Mirror</name> 
    <url>http://localhost:8081/nexus/content/groups/public/</url> 
    <mirrorOf>*</mirrorOf> 
</mirror>

 

 2.3、使用docker创建Nexus私服

启动Docker,输入命令:

// 安装docker
yum install docker -y
// 启动
systemctl start docker
// 修改镜像路径 自己登陆阿里云-》 容器镜像服务 -》 镜像加速器 -》 centos 就可以了
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://jf8zmt.mirror.aliyuncs.com"]
} E
OF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run -d -p 8081:8081 --name nexus3 sonatype/nexus3
// 查看运行状态
docker container ls
// 开放端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
// 获取密码
docker exec -it nexus3 /bin/bash
cd nexus-data/
cat admin.password

运行完毕,在浏览器访问http://192.168.120.201:8081/ 进入Nexus页面。如果访问不成功,可以在命令行输入 docker logs containerId 查看日志分析原因。

输入默认的用户名和密码admin/xxxxxxxx即可登录。进入界面后顶部由2个按钮,分别是仓库和设置。可以看到由4个默认的仓库。

一般来说,Nexus 的仓库分为这么几类:

hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;

proxy 代理仓库:代理公共的远程仓库;

group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

 

以下为了解,对私服进行权限认证(了解):

大部分公共的远程仓库无须认证就可以直接访问,但我们在平时的开发中往往会架设自己的Maven远程仓库,出于安全方面的考虑,我们需要提供认证信息才能访问这样的远程仓库。 配置认证信息和配置远程仓库不同,远程仓库可以直接在pom.xml中配置,但是认证信息必须配置在settings.xml文件中。这是因为pom往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只存在于本机。因此,在settings.xml中配置认证信息更为安全

<!--在setting.xml中配置认证信息-->
<server>
    <id>releases</id>
    <username>admin</username>
    <password>admin</password>
</server>
<server>
    <id>snapshots</id>
    <username>admin</username>
    <password>admin</password>
</server>

pom.xml文件

<repositories>
    <repository>
        <!--仓库 id,repositories 可以配置多个仓库,保证 id 不重复-->
        <id>nexus</id>
        <!--仓库地址,即 nexus 仓库组的地址-->
        <url>http://192.168.120.201:8081/repository/maven-central/</url>
        <!--是否下载 releases 构件-->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!--是否下载 snapshots 构件-->
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

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

<!--配置发布构件的仓库,maven deploy操作后,构件会被发布到哪里-->
<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://192.168.120.201:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://192.168.120.201:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

 

 

篇幅较长,分为五篇来记录,其他章节请见:

大话 Maven 系列笔记(一)——Maven概述:https://www.cnblogs.com/poscana/p/14940497.html

大话 Maven 系列笔记(二)——Maven依赖:https://www.cnblogs.com/poscana/p/14940545.html

大话 Maven 系列笔记(三)——pom文件:https://www.cnblogs.com/poscana/p/14940562.html

大话 Maven 系列笔记(四)——Maven仓库:https://www.cnblogs.com/poscana/p/14940577.html

大话 Maven 系列笔记(五)——插件和常用设置:https://www.cnblogs.com/poscana/p/14940596.html

 

 



这篇关于大话 Maven 系列笔记(四)——Maven仓库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程