maven repository 私人仓库怎么搭建

maven repository 私人仓库怎么搭建,第1张

方法:

1.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng

2.使用version准备路径,将version连接到后面:org/testng/testng/5.8

3.将artifactId于version以分隔符连字号连接到后面:org/testng/testng/5.8/tesng-5.8

4.判断如果构件有classifier,就要在 第4项 后增加 分隔符连字号 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5

5.检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/5.8/tesng-5.8-jdk5.jar

6、基于groupId准备路径,将句点分隔符转成路径分隔符,就是将  "."  转换成 "/" example: org.testng --->org/testng

参考资料

Maven详解之仓库------本地仓库、远程仓库.研发管理[引用时间2017-12-28]

如果你的Maven仓库在另一台计算机上无法使用,可能是以下几个原因之一:

网络问题:检查网络连接是否正常,确保另一台计算机能够访问Maven仓库。

仓库配置问题:检查Maven的settings.xml文件是否正确配置了仓库地址。

权限问题:确保另一台计算机有权限访问Maven仓库。

仓库宕机:确认远程仓库是否正常运行。

如果您无法解决此问题,请提供更多信息,以便我们更好地帮助您。

在以前使用 Ant 的时候,我们会建立一个 lib 目录在存放我们的 jar 包,比如项目所依赖的第三方包,每建立一个项目都要建立一个 lib ,不停的做 copy 工作,不仅是对于磁盘的浪费,而且也造成了版本管理上的麻烦。而且我们还需要通过提交到 svn 上来对 lib 进行管理,但是 svn 对于这种二进制文件的管理并不出色。

Maven 仓库的初中就是为了解决这个问题,是所有常用的第三方包的集中营。这样所有的 Maven 项目就可以从这个仓库中获取所需要的资源, Maven 仓库中对 jar 通过 Group Id, Atifact Id, version 来管理 ,所以 Maven 项目可以很方便的进行依赖管理。你不需要自己来管理这个庞大的资源仓库,当然你可以创建一个公司层面的仓库管理器,这个我在这个章节的后面会介绍。

Maven 仓库的两个概念:本地仓库和远程仓库

本地仓库是远程仓库的一个缓冲和子集,当你构建 Maven 项目的时候,首先会从本地仓库查找资源,如果没有,那么 Maven 会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果 你所需要的 jar 包版本在本地仓库没有,而且也不存在于远程仓库, Maven 在构建的时候会报错,这种情况可能发生在有些 jar 包的新版本没有在 Maven 仓库中及时更新。

Maven 缺省的本地仓库地址为 ${user.home}/.m2/repository 。也就是说,一个用户会对应的拥有一个本地仓库。当然你可以通过修改 ${user.home}/.m2/settings.xml 配置这个地址:

Xml代码

<settings>

...

<localRepository>D:/java/repository </localRepository>

...

</settings>

如果你想让所有的用户使用统一的配置那么你可以修改 Maven 主目录下的 setting.xml:

${M2_HOME}/conf/setting.xml

还可以通过在运行时指定目录,但是并不推荐这么做:

mvn clean install -Dmaven.repo.local=/home/juven/myrepo/

当我们创建一个简单的 Maven 项目后 ( 只需要在 pom.xml 配置好依赖 ) ,运行 mvn clean install 就可以把项目构建好,不需要我们手工下载任何 jar ,这全靠中央仓库的存在,它会自动从仓库下载。这个仓库的定义是在 ${M2_HOME}/lib/maven-2.0.10-uber.jar 里面。你可以在里面找到 /org/apache/maven/project/pom-4.0.0.xml 这个文件,在这个文件里面定义了中央仓库的地址:

<repositories>

<repository>

<id>central </id>

<name>Maven Repository Switchboard </name>

<layout>default </layout>

<url>http //repo1 maven org/maven2 </url>

<snapshots>

<enabled>false </enabled>

</snapshots>

</repository>

</repositories>

在 POM 中配置远程仓库

下面我介绍下如何在 pom.xml 里面配置远程仓库,我们需要在什么时候配置远程仓库呢?当你连接中央仓库的速度比较慢时,或者你为你的公司搭建了自己的仓库,比如 Nexus 仓库管理 ( 后面我会介绍 ) ,又或者你苏需要的 jar 存在另外一个公共仓库,比如我们配置一个国内的镜像地址:

<project>

...

<repositories>

<repository>

<id>maven-net-cn </id>

<name>Maven China Mirror </name>

<url>http /maven net cn/content/groups/public/ </url>

<releases>

<enabled>true </enabled>

</releases>

<snapshots>

<enabled>false </enabled>

</snapshots>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id>maven-net-cn </id>

<name>Maven China Mirror </name>

<url>http //maven net cn/content/groups/public/ </url>

<releases>

<enabled>true </enabled>

</releases>

<snapshots>

<enabled>false </enabled>

</snapshots>

</pluginRepository>

</pluginRepositories>

...

</project>

这里我们可以看到 ,允许配置多个 repository 和 plugin repository , <releases><enabled>true</enabled></releases>告诉 Maven 可以从这个仓库下载 releases 版本的构件,而 <snapshots><enabled>false</enabled></snapshots>告诉 Maven 不要从这个仓库下载 snapshot 版本的构件 , 之所以不让你从这个仓库下载 snapshot 版本,是因为这些版本是不稳定的,但是 snapshot 版本在我们内部项目开发的时候可是作用巨大,后面的问文章我会讨论这个问题。 至于 <pluginRepositories>,这是配置 Maven 从什么地方下载插件构件, Maven 的所有行为都是通过插件来完成的,其内部配置与 <repository >类似,这里就不多说了。

尽管 pom.xml 中可以方便的哦配置中央仓库,但是我并不推荐大家这么做,尤其是在大的公司中,因为一个公司会有很多的项目,如果每个项目都这样配置,那么又开始做重复的 copy 工作了,如何解决呢,我们往下走

在 settings.xml 中配置远程仓库

P om.xml 的作用范围是一个项目,一个公司不可能只做一个项目,那么为了避免重复配置,那么我们需要把一些公共信息配置在 setting.xml 中。但是 setting.xml 中并不支持 <repositories>及 <pluginRepositories >,为了解决这个问题我们使用 profile :

<settings>

...

<profiles>

<profile>

<id>myProfiel </id>

<!—在这里加入 <repositories>及 <pluginRepositories >-->

</profile>

</profiles>

<activeProfiles>

<activeProfile>myProfiel </activeProfile>

</activeProfiles>

...

</settings>

这里通过 <activeProfile>元素来激活这个 profile ,这样我们就可以全局的使用这个配置,不再需要为每个 POM 做重复的配置了。

在实际的操作过程中,这里我们最好不要配置远程仓库,最好能够通过 nexus 建立公司或者组织自己的仓库,然后这把把地址指向自己的仓库,后面我会介绍为什么要这么做,怎么做。

配置镜像

如果你想覆盖中央仓库的默认地址,那么这里我们就会使用的镜像了,还在 setting.xml 里面配置:

<settings>

...

<mirrors>

<mirror>

<id>maven-net-cn </id>

<name>Maven China Mirror </name>

<url>http //maven net cn/content/groups/public/ </url>

<mirrorOf>central </mirrorOf>

</mirror>

</mirrors>

...

</settings>

这里解释一下 <mirrorOf>, 表示只为 central 仓库做镜像,如果想为所有的仓库做镜像那么可以改为: <mirrorOf>*</mirrorOf>

如果你看到这里,请先不要着急,实际的项目经验告诉我,只是这些还不够,我们需要更快捷和高效的管理:

利用 Nexus 来构建企业级 Maven 仓库

Nex u s 简介

Nexus 是 Maven 仓库管理器,用来搭建一个本地仓库服务器,这样做的好处是便于管理,节省网络资源,速度快,还有一个非常有用的功能就是可以通过项目的 SNAPSHOT 版本管理,来进行模块间的高效依赖开发,下面会一一描述。

虽然你可以通过中央仓库来获取你所需要的 jar 包,但是现实往往是存在很多问题:

网速慢,你可能需要花很长的时间来下载你所需要的 jar

如果你的公司很大,有几百甚至几千人再用 Maven ,那么这些人都去通过中央仓库来获取 jar ,那么这是一个很大的资源浪费

如果存在模块之间的依赖开发,你的 snapshot 版本是不能够被你的伙伴很方便的获取。

在实际开发过程中,有些 jar 的版本可能在中央仓库里面不存在,或者更新不及时 ,你是获取不到这个 jar 的。

所有以上问题,通过 Nexus 这个日益流行的仓库管理器可以轻松的解决。

这个仓库是本地的,下载的速度是从远程下载不可比的。

可以为你公司所有的 Maven 使用者服务,可以进行统一管理

后面我会介绍如何通过 nexus 来进行存在模块依赖的项目的开发

你可以添加自己的第三方包。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/298561.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-25
下一篇2023-04-25

发表评论

登录后才能评论

评论列表(0条)

    保存