Maven百科-maven仓库

本文介绍了Maven仓库的布局、分类及配置方法,并详细讲解了如何发布到远程仓库、版本管理和镜像设置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

RoadMap

115319_vCYW_1041012.png

 

1. 仓库布局

任何一个构件(jar包) 都有一个唯一的GAV坐标,根据这个坐标,可以定位到它在仓库的存储路劲。

以  junit为例子

<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>

\junit\junit\4.12\junit-4.12.jar

如果有identifier,或者 extension 或在jar包名字后面加对应的名字

{artificat}-{version}-{identifier}.{packing}

2. 仓库分类

103904_JzMF_1041012.png

对于Maven来说,仓库有两种,本地仓库和远程仓库。

maven在构建的时候,会优先从本地仓库找,如果没有再去远程仓库找并且下载到本地仓库。

2.1 本地仓库

本地仓库 默认是在 ~/.m2/repository   下面, 也可以自定义。通过修改maven的配置文件 MAVEN_HONE/conf/Setting.xml

104138_XY4i_1041012.png

推荐在~/.m2/setting.xml 下做修改, 如果没有则拷贝MAVEN_HONE/conf/Setting.xml一份过来,因为conf/Setting.xml是全局的配置。

2.2 远程仓库

远程仓库是一个在线的MAVEN仓库,可以分为三类, 中央仓库,私服,其他类型

2.2.1 中央仓库

    可以说是一个默认的 公共的远程仓库, 不管怎么说,maven至少有一个远程可用的仓库存在,以保证在构建的时候,本地仓库没有任何可用的jar时候可以访问远程库进行下载。

    无需做任何配置的情况下, Maven默认将中央库配置http://repo1.maven.org/maven2 下面。

2.2.2 私服

   私服是一个特殊的远程仓库,或者说是自行搭建的一个局域网内的在线仓库,如果是公网那就编程中央仓库了,

   在有私服的情况下,在本地库不存在需要的jar 时候,会去私服上找,如果私服没有再去中央库下载。所以 私服它缓存了各大中央仓库的构建,另外私服也可以管理自行编写的构件。

   针对有网略限制,或者有安全策略的(毕竟开源的jar并不是100%可靠的)社区或企业来说,搭建私服是一个很好的管理手段。

105050_Xoii_1041012.png

私服具有一下优势:

    1. 节省外网带宽。 2.加速构建,毕竟是局域网内 3. 上传自定义构建 4.增强构建管理,5降低中央仓库的负荷

2.3 远程仓库的配置

仓库配置,可以在全局的配置文件或者项目pom文件里面 做配置.

配置节点是  <repositoires>和<pluginRepositories>

分别对应 构件库和插件库,虽然理论上都是jar,根据作用不同做了配置区分。

另外配置的时候可以指定下载 release还是snapshot

id,name,和url 可以任务是仓库的GAV坐标。

   <repositories>
        <repository>
            <id>jboss</id>
            <name>jboss</name>
            <url>http://repostiory.jboss.com/maven2</url>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>jboss</id>
            <name>jboss</name>
            <url>http://repostiory.jboss.com/maven2</url>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
                <updatePolicy>daily</updatePolicy>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

2.3.1 下载策略

下载策略指的是,何时去中央库缓存,同步,更新jar包。可以配置的值有

daily; 每天同步一次
never: 从来不同步
always:每次构建的时候 都去中央库同步一次
interval X: x表示每隔多少分钟同步跟新一次

2.3.2 文件检验策略

检验策略指的是,在同步或者上传构件的同时,会生成一份校验和文件,当maven客户端去下载构件的时候会进行校验,配置的策略做出不同的处理。

可配置的值有

warn: 发出警告,但依然会继续构建
ignore: 忽略校验信息
fail: 构建失败

2.4 远程认证

大部分远程仓库是不需要认证,直接可以访问。 出于安全考虑远程仓库提供了认证服务。

与仓库配置不同的是,它只能配置在 setting.xml里面

配置节点是<servers>,同时支持2种认证方式, 用户名密码和非对称密钥。

<servers>
    <!-- server
     | Specifies the authentication information to use when connecting to a particular server, identified by
     | a unique name within the system (referred to by the 'id' attribute below).
     |
     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
     |       used together.
     |
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
    -->

    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
  </servers>

3 发布到远程仓库

mvn clean deploy  中的deploy阶段 并非把jar或者war 部署到应用服务器上,对于初学者来说非常容易混淆,这里的deploy是将构件 发不到远程仓库,至于发布到哪个远程仓库,需要早配置文件里面做配置,

配置节点是< distributionManagement>,id,name,url 是标识,可以通过id 在setting里面配置对应的认证策略。

可以配置 release repository 和snapshot repostiory

 <distributionManagement>
        <repository>
            <id>ditritbution</id>
            <name>repository name</name>
            <url>url here</url>
        </repository>
        <snapshotRepository>
            <id> snapshot distribtion id</id>
            <name>repository name</name>
            <url>url here</url>
        </snapshotRepository>
    </distributionManagement>

4 RELEASE版本与SNAPSHOT

5 仓库镜像

    如果X仓库提供了Y仓库的所有内容,则X仓库是Y仓库的镜像,换句话说,从Y仓库获得的构建,也能从X仓库获得,由于网络原因或者防火墙的缘故,各区域或就进建一个镜像,定期同步源库的构建,就近原则,所以镜像的效率往往要高于源库。

镜像的配置在 setting.xml里面,配置节点是< mirrors>, 其中mirrorOf 表示一个中央仓库的ID,任何一个访问这个Id的请求都会路由到这个镜像。

其中 mirrorOf 支持通配

<mirrorOf>*</mirrotOf> 匹配所有远程仓库

<mirrorOf>repo1,repor2</mirrotOf>匹配repo1,repo2远程仓库

<mirrorOf>*,! repor2</mirrotOf>匹配所有远程仓库 repo2除外

 

<mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
  </mirrors>

6 仓库搜索

在日常开发中,想要具体知道 构建的GAV,可以通过以下几个搜索网站进行查询

Sonatype Nexus:https://repository.sonatype.org/
MVNBrowser: http://www.mvnbrowser.com
Mvn Repository: http://mvnrepository.com

转载于:https://my.oschina.net/u/1041012/blog/917693

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值