发布Maven 到Nexus中央仓库

之前已经介绍过Nexus 部署Maven私服仓库 今天说说关于将JAR(项目)发布到Maven私服。

这个需求是因为Web项目使用的Maven库是第三方的,而三方的这个库又不稳定(如版本的更新、网络中断),虽然做了个库代理下载了索引,但有一天这个第三方的库服务突然关闭了,然后就悲剧了……

这种悲剧在我的团队中就发生过,可能是对Maven库的理解不透彻,也可能是不清楚哪些JAR是私有的。不过怎样都好,出了问题就要解决,最初是想将缺少的JAR上传到本地Maven私服,但不通其法失败,为了降低对开发的影响,最后又换了一个第三方的库……

最近终于将这个问题解决了,突然发现原来是如此的简单……

先来说说sonatype Nexus OSS的仓库

仓库类型:

group: 仓库组。可将选定仓库添加到仓库组

hosted: 宿主。自创建的文件放到此类型下

proxy: 代理。

virtual:虚拟。

仓库属性:

Policy

Release:发布,既是代表稳定版本

Snapshot:快照,代表开发版本

Download Remote Indexes :仓库远程索引,默认为False

Default Local Storage Location: 默认本地目录

Override Local Storage Location:重新本地存储位置

默认库:   

  • Central:该仓库代理Maven中央仓库,其策略为Release,因此只会下载和缓存中央仓库中的发布版本构件。
  • Releases:这是一个策略为Releases的宿主类型仓库,用来部署组织内部的发布版本构件。
  • Snapshots:这是一个策略为Snapshot的宿主类型仓库,用来部署组织内部的快照版本构件。
  • 3rd party:这是一个策略为Release的宿主类型仓库,用来部署无法从公共仓库获得的第三方发布版本构件。
  • Apache Snapshots:这个一个策略为Snapshots的代理仓库,用来代理Apache Maven仓库的快照版本构件。
  • Codehaus SnapShots:这是一个策略为Snapshots的代理仓库,用来代理Cohehaus Maven仓库的快照版本构件。http://morrowind.blog.51cto.com/addblog.php
  • Sonatype Repositories:这是一个策略为Release的代理仓库,用来代理sonatype Maven仓库的快照版本构件。
  • Central M1 shadow : 用于提供中央仓库中M1格式的发布版本的构件镜像仓库

发布到Maven 中央仓库

Nexus上传:

选择Releases仓库,在"Artifact Upload"属性卡内,选择“Select Artifacts(s) to Upload"上传需要发布的包,“GAV Definition” 选择 pom文件,如果没有pom文件在选GAV Parameters后手动指定包坐标。

使用Maven部署构件至Nexus

选择Releases/Snapshots仓库,在"Configuration"属性卡内,确认“Deployment Policy“属性为 Allow Redeploy

启用Deployment用户,Nexus默认有三个用户,其中Deployment用户用于部署项目

Deployment用户默认密码为deployment123,右键菜单可修改或重置密码

在pom.xml中分别对Release版本和Snapshot版本配置部署仓库,其中id唯一,url分别对应私服中Releases和Snapshots仓库的Repository Path:

<uniqueVersion>表示是否为Snapshot版本分配一个包含时间戳的构建号,效果如下:

    <distributionManagement>
        <snapshotRepository>
            <id>user-snapshot</id>
            <name>User Porject Snapshot</name>
            <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
            <uniqueVersion>true</uniqueVersion>
        </snapshotRepository>
        <repository>
            <id>user-release</id>
            <name>User Porject Release</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </repository>
    </distributionManagement>

Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:

    <servers>
        <server>
            <id>user-release</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
        <server>
            <id>user-snapshot</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
        …        
    </servers>

其中,验证信息中service的id应该与POM中repository的id一致。

这样通过 maven 可以自动布置到Nexus私服中了。命令如下:

mvn clean deploy -Dmaven.test.skip=true

也可右键pom.xml -> Run As ->2 Maven build

发布成功后,在私服的仓库中就能看到了:

参考:http://www.cnblogs.com/luotaoyeah/p/3817465.html

推荐:Maven 权威指南或Maven 实战

时间: 2024-10-11 00:30:41

发布Maven 到Nexus中央仓库的相关文章

如何发布Maven依赖到中央仓库

平时我们都是从Maven中央仓库下载依赖,如果我们想发布我们自己写的Maven依赖到中央仓库供别人下载使用应该怎么办?这里以上传自己写的simian-maven-plugin(https://github.com/jiangxincode/simian-maven-plugin)的实际过程为例说明如何发布Maven依赖到中央仓库. 开始之前,请注意几个地址:? 1.工单管理:https://issues.sonatype.org/secure/Dashboard.jspa 说明:注册账号.创建和

发布Maven构件到中央仓库

使用maven有一段时间了,不管你同意与否,我都坚决认定maven是很伟大的软件项目,使用它,可以节约很多时间,特别是和git搭配使用的时候,简直就是绝了,就像川菜的花椒和海椒的搭配一样,无与伦比,用过之后肯定会爱上它的.在我的以前的博客里面有关于怎样使用git(eclipse里面的egit插件)管理项目的说明,下面我就怎样将构件发布到maven的中央仓库进行说明.如果你还不知道什么事maven或者git(及时你的工作不会使用到它们,但是都应该有所了解吧),那真的应该去了解一下了. 这里需要说明

maven阿里云中央仓库

该死的 oschina的库,我还以为还活着呢. 因为网上检索出来的, 都是oschina的例子. 后来才发觉竟然是死的,我其实一直在用 jcenter. 于是找到下面的文章,估计好用.还没试. http://blog.csdn.net/u010717403/article/details/52188496 maven阿里云中央仓库maven作为一个项目管理工具确实非常好用,但是在国内这个网络条件下实在是让人恼火.之前oschina的中央仓库可用,现在oschina的maven服务器关了,一直没找

Maven之——Nexus创建仓库

Maven之--Nexus创建仓库 1.    创建宿主仓库 我们可以使用Maven内置的宿主仓库.发布版的Release.快照版的Snapshot.也可以自己创建宿主仓库.步骤如下: Release宿主仓库: 如上图操作.选择添加一个宿主仓库.下面的参数都可以将鼠标放在?上获取具体信息.这里只对重要的做说明:Repository Type 值为Relaese时.表示此宿主仓库是发布版.值为Snapshot时.表示此宿主仓库为快照版.Deployment用来配置此仓库的部署策略.选项有禁止部署(

Maven的默认中央仓库

当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包(http://repo1.maven.org/maven2/),如果没有,执行第3步. 3.如果在pom.xml中定义了自定义的远程仓库,那么也会在这里的仓库中进行查找并获得依赖包,如果都没有找到,那么Maven就会抛出异常. 默认中央仓库的地址: 1.http://repo1.maven.org

Maven修改默认中央仓库

其实Maven的默认仓库是可以修改的.比如使用阿里云的镜像地址等. 修改步骤: 1.打开{M2_HOME}/conf/settings.xml文件,找到mirrors节点,修改如下代码: <mirrors> <mirror> <id>aliyun-repos</id> <name>aliyun Releas</name> <url>http://maven.aliyun.com/nexus/content/groups/p

Linux 安装Maven和nexus代理仓库

1    说明 2    安装步骤 2.1      下载地址 2.2      MAVEN安装步骤 2.2.1   解压Maven安装包 2.2.2  配置环境变量 2.3      Sonatype Nexus私服安装步骤 1    说明 环境:redhat Enterprise Linux Server5.3-x64. 版本:Maven 3.0.5 ,Nexus-2.5.1-bundle. 2    安装步骤 2.1      下载地址 Maven: http://mirrors.cnni

向maven中央仓库提交jar

从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库. Sonatype OSSRH介绍: Sonatype OSSRH使用Nexus 为开源项目提供仓库管理服务,该仓库就是所谓maven的中央仓库,OSSRH允许我们向Maven中央仓库提交二进制文件. 1:提交(deploy)开发版本的二进制文件(snapshorts) 2: 阶段性的发布版本 3:发布一个release,然后同步他们到中央仓库. 初始阶段

一份可以发布到MAVEN中央仓库的POM

今天在家折腾了一下怎么把Jar包发布到Maven的中央仓库,基本步骤百毒一堆,但基本上都是让引用sonatype的parent pom,个人感觉这份pom并不好用,于是自己写了一个,同时这个pom也是Spring MVC + Hibernate + Spring Security开发的基本pom,有兴趣的童鞋可以参考一下. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt