maven相关知识点

maven相关知识点

参考书籍:《maven实战》许晓斌 著

6.仓库

6.4 远程仓库的配置

<!--第三方maven私服-->
<repositories>
    <repository>
        <id>nexus-aliyun</id>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

改例中声明了一个id为nexus-aliyun,名称为Nexus aliyun的仓库。任何一个仓库的生命的id必须是唯一的,尤其需要注意的是, Maven自带的中央仓库使用的id为central,如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置,
该配置中的url值指向了仓库的地址,一般来说,该地址都基于htp协议, Maven用户都可以在浏览器中打开仓库地址浏览构件。
该例配置中的releases和snapshots元素比较重要,它们用来控制Maven对于发布版构件和快照版构件的下载,
这里需要注意的是enabled子元素,该例中releases的enabled值为true,表示开启Nexus aliyun仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭Nexus aliyun仓库的快照版本的下载支持。
因此,根据该配置, Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。该例中的layout元素值default表示仓库的布局是Maven 2及Maven 3的默认布局,而不是Maven 1的布局。对于releases和snapshots来说,除了enabled,它们还包含另外两个子元素updatePolicy和checksumpolicy:

 <snapshots>
     <enabled>false</enabled>
     <updatePolicy>daily</updatePolicy>
     <checksumPolicy>ignore</checksumPolicy>
 </snapshots>

元素updatePolicy用来配置Maven从远程仓库检查更新的频率,
默认的值是daily,表示Maven每天检查一次。其他可用的值包括:
never一从不检查更新;
always-每次构建都检查更新:
interval: X-每隔X外钟检查一次更新(X为任意整数)。
元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候, Maven会验证校验和文件,如果校验和验证失败,怎么办?
当checksumPolicy的值为默认的warm时, Maven会在执行构建时输出警告信息,其他可用的值包括:
fail-Maven遇到校验和错误就让构建失败;
ignore一使Maven完全忽略校验和错误。

6.4.1远程仓库的认证

大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库。例如,组织内部有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问、管理员为每个仓库提供了一组用户名及密码。这时,为了能让Maven访问仓库内容,就需要配置认证信息。

配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在setting. ml文件中,这是因为POM往往是被提交到代码仓库中供所有成5访问的,而 seting. xml一般只放在本机,因此,在setings. xal中配置认证信息更为安全假设需要为一个id为my-proj)的仓库配置认证信息,编辑setings, xml文件见代码清单

<servers>
   <server>
		<id>my-snapshot</id>
		<username>repo-user</username>
		<password>repo-pwd</password>
   </server>
   <server>
		<id>my-release</id>
		<username>repo-user</username>
		<password>repo-pwd</password>
   </server>
</servers>

Maven使用setting. xml文件中并不显而易见的servers元素及其server子元素配置仓库认证信息。代码清单6-3中该仓库的认证用户名为repo-user,认证密码为repo-pwd。这里的关键是id元素, settings xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。换句话说,正是这个id将认证信息与仓库配置联系在了一起。

6.4.2部署至远程仓库

私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其他团队成员使用。Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中首先,需要编辑项目的pom.xml文件。配置distributionMangermet 元素如下:

<distributionManagement>
   <repository>
       <id>my-release</id>
       <name>project release repository</name>
       <url>http://192.168..100/content/repositories/proj-release</url>
   </repository>
   <snapshotRepository>
       <id>my-snapshot</id>
       <name>project snapshot repository</name>
       <url>http://192.168..100/content/repositories/proj-snapshot</url>
   </snapshotRepository>
</distributionManagement>

distributionManagement 包含repoitory 和 sapholeposiony子元素,
前者表示发布版本构件的仓库,后者表示快照版本的仓库,这两个元素下都需要配置id, name和url, id为该远程仓库的唯一标识, name是为了方便人阅读,关键的url表示该仓体的地址。
往远程仓库部署构件的时候,往往需要认证。就是需要在setting. xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论从远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。配置正确后,在命令行运行mva clean deploy, Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。如下是部署一个快照版本的输出:
在这里插入图片描述

6.6 从仓库解析依赖的机制

在这里插入图片描述

6.7 镜像

在这里插入图片描述
在这里插入图片描述

6.8 仓库搜索服务

使用Maven进行日常开发的时候,一个常见的问题就是如何寻找需要的依赖,我们可能只知道需要使用类库的项目名称,但添加Maven依赖要求提供确切的Maven坐标。这时,就可以使用仓库搜索服务来根据关键字得到Maven坐标。本节介绍几个常用的、功能强大的公共Maven仓库搜索服务。

6.8. 1 Sonatype Nexus

地址: http//repository.sonatype.org/
Nexus是当前最流行的开源Maven仓库管理软件,本书后面会有专门的章节讲述如何使用Nexus假设私服。这里要介绍的是Sonatype架设的一个公共Nexus仓库实例。Nexus提供了关键字搜索、类名搜索、坐标搜索、校验和搜索等功能。搜索后,页面清晰地列出了结果构件的坐标及所属仓库。用户可以直接下载相应构件,还可以直接复制已经根据坐标自动生成的XMI.依赖声明,

6. 8. 2 Jarvana

地址: http://www.jarvana.com/jarvana/
Jarvana提供了基于关键字、类名的搜索,构件下载、依赖声明片段等功能也一应俱全。值得一提的是, Jarvana还支持浏览构件内部的内容。此外, Jarvana还提供了便捷的Java文档浏览的功能。

6.8.3 MVNbriwser

地址:http://www.mvnbrowser.com/
MVbrowser只提供关键字搜索的功能,除了提供基于坐标的依赖声明代码片段等基本功能之外, MVbrowser的一大特色就是,能够告诉用户该构件的依赖于其他哪些构件(Dependencies)以及该构件被哪些其他构件依赖(Referenced By)

6. 8. 4 MVNrepository

地址: https://mvnrepository.com/
MVNrepository的界面比较清新,它提供了基于关键字的搜索、依赖声明代码片段、构件下载、依赖与被依赖关系信息、构件所含包信息等功能。MVNrepostory还能提供一个简单的图表,显示某个构件各版本间的大小变化。

9 使用Nexus创建私服

9.2 安装

Nexus是典型的Java Web应用,它有两种安装包,一种是包含Jetty容器的Bundle包另一种是不包含Web容器的war包。

9.2.1 下载Nexus

下载地址:http://nexus, sonatype org/downloads/

9.5 配置Maven从Nexus下载构件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码到成功>_<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值