【Maven】Nexus3搭建Maven私有仓库及使用

Maven库

remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问
local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录

Remote Repository主要有3种:
中央仓库:http://repo1.maven.org/maven2/
私服:内网自建的maven repository,其URL是一个内部网址
其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等

repository里存放的都是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。

搭建私服

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

下载地址:

首先从Nexus官网下载地址中下载压缩吧,有两种版本,这里选择最新的Nexus3.

安装步骤:

解压缩后,压缩包这个路径下的nexus-default.properties文件们是用来配置访问端口的,默认8081。

接着,找到bin目录下nexus.exe文件,这个就是我们要用来安装的服务的文件:

以管理员身份运行cmd,然后进入D:\Program Files\nexus-3.2.1-01-win64\nexus-3.2.1-01\bin这个目录下。

运行nexus.exe /install Nexus Service命令,这个时候服务列表里会出现对应的服务(记住一定要先在命令行中进入这个目录,在执行命令)

然后就可以启动这个服务,稍等一会时间,在浏览器中访问 http://localHost:8081/。

Nexus中预留了两个登陆账户,一个是admin,一个是anonymous。admin具有全部权限默认密码admin123;anonymous作为匿名用户,只具有查看权限。

登陆后,就能够得到这个页面

几个库的说明:

maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

可以随意点一点看一看,大概功能就懂了,这里不予赘述。

接下来就要将本地的Maven和Nexus搭建的私服联系起来,这里需要用到Maven的setting.xml文件。这里使用局部setting.xml,就是C:\Users\Administrator\.m2\settings.xml。

首先在setting.xml文件中配置私服的账号密码,然后配置私服镜像,这里需要注意的是,如果该镜像仓库需要认证,则对相应的id在server中配置相应认证信息即可:

创建新的工程,在其pom.xml文件中添加

保存,console中会打印下载的结果:

可以看到jar包是从私服上下载下来了的。

 

私服优点主要有:
节省外网宽带
加速Maven构建
部署第三方构件
提高稳定性、增强控制:原因是外网不稳定
降低中央仓库的负荷:原因是中央仓库访问量太大

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 Maven 的 Java API 来获取 Nexus 上指定组件的全部版本信息。以下是一个示例代码: ```java import org.apache.maven.artifact.repository.metadata.DefaultMetadataResolver; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.MetadataResolutionRequest; import org.apache.maven.artifact.repository.metadata.MetadataResolutionResult; import java.util.List; public class NexusMetadataResolver { private final String nexusUrl; private final String repositoryId; public NexusMetadataResolver(String nexusUrl, String repositoryId) { this.nexusUrl = nexusUrl; this.repositoryId = repositoryId; } public List<String> getComponentVersions(String groupId, String artifactId) throws Exception { DefaultMetadataResolver resolver = new DefaultMetadataResolver(); MetadataResolutionRequest request = new MetadataResolutionRequest(); request.setRemoteRepository(nexusUrl, repositoryId, true); request.setMetadata(new Metadata(groupId, artifactId, "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT)); MetadataResolutionResult result = resolver.resolve(request); Metadata metadata = result.getMetadata(); return metadata.getVersioning().getVersions(); } } ``` 使用时,您需要传入 Nexus 服务器的地址和仓库 ID,以及要获取版本信息的组件的 `groupId` 和 `artifactId`。例如: ```java NexusMetadataResolver resolver = new NexusMetadataResolver("https://<nexus-url>/repository/maven-public/", "nexus"); List<String> versions = resolver.getComponentVersions("com.example", "example-component"); for (String version : versions) { System.out.println(version); } ``` 其中,`<nexus-url>` 是 Nexus 服务器的地址,"nexus" 是仓库 ID,"com.example" 和 "example-component" 分别是组件的 `groupId` 和 `artifactId`。这段代码会输出指定组件的所有版本信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值