Maven与Nexus OSS
Maven 是一个项目管理和构建自动化工具,是Apache Fundation下的一个Java项目。常用于Java项目中依赖管理
下载直接去官网
安装Maven
已经编译的二进制包 直接解压到安装目录即可
$ cd /path/to/Download
$ tar -xf apache-maven-3.3.9-bin.tar.gz
$ sudo mv apache-maven-3.3.9 /usr/local/
$ sudo ln -s /usr/local/apache-maven-3.3.9/bin/* /usr/bin/
maven会首先查询 pom.xml
引入的包,查找本地仓库是及工程目录,如不存在相应的包就会从maven的远程apache仓库下载
打包工程
mvn package
发布包到本地仓库
mvn install
Nexus OSS
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。 Nexus分为专业收费的Nexus Pro与免费的Nexus OSS两个版本。本文以Nexus OSS为主体
安装与配置
下载Nexus OSS Nexus OSS 3.0 已经不支持Maven格式,所以这里我们下载 2.x 版本, 下载地址
安装Nexus OSS
$ cd /path/to/Downloads
$ tar -xf nexus-2.14.1-01-bundle.tar.gz
$ cd nexus-2.14.1-01-bundle
$ sudo mv nexus-2.14.1-01 /usr/local/ # 建立仓库存放目的
$ sudo mkdir /Data
$ sudo mv sonatype-work /Data/ # 建立bin运行软链
# sudo ln -s /usr/local/nexus /usr/local/nexus-2.14.1-01
# sudo ln -s /usr/loca/nexus-2.14.1-01/bin/nexus /usr/local/bin/
配置Nexus OSS
$ cd /usr/local/nexus-2.14.1-01/conf
$ sudo vim nexus-propertities # 修改以下内容
nexus-work=/Data/nexus-repos/sonatype-work/nexus
测试运行
$ nexus start # 停止
$ nexus stop # 重启
$ nexus restart
浏览器打开http://localhost:8081/nexus
,即可看到nexus oss的欢迎界面
登录用户:admin,默认密码:admin123,登录后可在个人中心修改。
nginx反代方式
$ cd /path/to/nginx/conf/vhosts
$ sudo vim nexus.local.me.conf # 内容如下:
server
{
server_name nexus.aeonluck.me; location / {
proxy_pass http://127.0.0.1:8081; proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
}
添加本地host
# sudo vim /etc/hosts # 增加以下内容
127.0.0.1 nexus.local.me
测试反代
$ sudo nginx -s reload
浏览器打开http://nexus.local.me/nexus
即可见到nexus oss欢迎界面
仓库配置
Nexus的仓库分为以下几种:
- proxy : 代理仓库,对远程仓库的本地代理。
- hosted : 本地仓库。
- virtual:影子仓库,对proxy或hosted仓库的映射。
- group:仓库组,作为逻辑仓库组对外
首先,我们要对几个重要仓库的配置进行修改,如 central
,Apache Snapshots
等,你也可以自己添加外部仓库。
- 点击左侧 repositories,右侧打开仓库列表。
- 选择仓库 central,点击下方 configuration,找到 “Download Remote Indexes”,修改为 true,保存。
- 右击仓库列表中 central,选择 Update Indexs,然后打开左侧管理菜单 Administration > Scheduled Tasks,即可在计划任务列表中看到刚才建立的“update indexs”任务,这需要一定时间。
- 索引下载完成后,我们即可在仓库的 Browse Index 中查看索引,并可进行相应的搜索
小提示:
- 其它仓库配置可以参照上述过程。
- 可以通过Nexus OSS左侧菜单 Administration > Logging 查看相应的日志。
- 关于Nexus OSS的其他管理功能不再累述,只需点击左侧菜单按提示操作即可
Maven与Nexus OSS的配合使用
修改Maven配置,加入私库
$ vim ~/.m2/settings.xml # servers 内增加我们的私库用户
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server> # mirrors增加私库
<mirror>
<id>nexus</id>
<name>Local nexus repo</name>
<url>http://nexus.aeonluck.me/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
特别要注意的是:
一定要配置为 <mirrorOf>*</mirrorOf>
,即让所有的仓库都先经过私库,这样可以将远程下载的包缓存到本地
小提示:
- Maven安装目录下的 /conf/settings.xml 起全局控制作用。
- 用户目下的Maven配置文件,即:~/.m2/settings.xml 仅对当前用户用效
添加个国内仓库 默认的apache的仓库下载速度比较慢,这里选择阿里云的Nexus仓库
$ vim ~/.m2/setting2.xml # 在mirrors中增加以下内容
# 注意,位置于我们的私库之后,否则私服不能缓存到下载的包。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
关于Maven的mirror:
- mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,id是唯一标识一个mirror就不多说了,name貌似没多大用,相当于描述,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。
- 镜像库并不是一个分库的概念,就是说当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载。但事实却不是这样,当第一个mirror中不存在a.jar的时候,并不会去第二个mirror中查找,甚至于,maven根本不会去其他的mirror地址查询。
- maven的mirror是镜像,而不是“分库”,只有当前一个mirror无法连接的时候,才会去找后一个,类似于备份和容灾。
- mirror也不是按settings.xml中写的那样的顺序来查询的。所谓的第一个并不一定是最上面的那个。当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,一定会找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询。
Maven工程发布与私库
一般情况下,一个使用Maven的Java团队,都会有自己的项目仓库,当开发完成相应的功能之后,都会发布相应的jar/war包到私服。供其它项目成员使用
发布配置 在Maven工程的pom.xml中增加以下内容
<!-- 工程自述 -->
<groupId>org.aeonluck</groupId>
<artifactId>org.aeonluck.hello</artifactId>
<packaging>jar</packaging>
<version>0.1.0-SNAPSHOT</version> <!-- 发布配置 -->
<distributionManagement>
<repository>
<id>snapshots</id>
<name>Snapshots</name>
<url>http://nexus.local.me/nexus/content/repositories/snapshots/</url>
</repository>
</distributionManagement>
重要提示:
- 当发布到属性为
snapshot
的仓库时,工程自述说明小节中的<version>
,需要带上后缀SNAPSHOT
,否则会当成release
发布。会收到400 Bad Request
错误。 - 发布配置中的
<url>
地址一定要区分清楚。并在release
与snapshot
仓库里配置不同的地址。此外,id、name 要与Nexus中仓库的配置 configuration 中的内容一致。 - Nexus OSS的仓库属性:
- snapshot : 快照版本,即不稳定的频繁发布场所,常用于团队成员快速联调。
- release : 正式版本,即稳定包所在场所
发布jar到的私库
$ cd /path/to/myproject
$ mvn deploy
包发布之后,我们即可在Nexus OSS的管理仓库中看到我们刚才发布的包
小提示
$ mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar # 发布到本地仓库
mvn install:install-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] # 发布到私服
mvn deploy:deploy-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]
Maven与Nexus OSS的更多相关文章
- 【Maven学习】Nexus OSS私服仓库的备份与迁移
背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...
- 【Maven学习】Nexus OSS私服仓库的安装和配置
背景 公司的代码依赖是通过Maven进行管理的,而Maven的私库我们使用的是Nexus,目前使用的版本是Nexus Repository Manager OSS 2.12.1. 但是由于之前我们搭建 ...
- Maven仓库搭建--nexus私服
Maven仓库搭建--nexus私服(Linux环境) Maven仓库简介 Maven仓库分为本地仓库.远程仓库.私服.本文重点介绍私服的使用方法. 下载安装包 网址:http://www.sonat ...
- Ubuntu server下搭建Maven私服Nexus
Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...
- Maven仓库—Nexus环境搭建及简单介绍
1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...
- Maven仓库-Nexus环境搭建及简单介绍
1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件——免费] NE ...
- Maven仓库—Nexus环境搭建及使用
使用Sonatype Nexus搭建Maven私服后如何添加第三方JAR包 http://blog.csdn.net/yanjun008/article/details/42084109 Nexus介 ...
- 持续集成之三:搭建Maven私服Nexus
安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7. ...
- 【Maven】Nexus(Maven仓库私服)下载与安装
Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库 ...
随机推荐
- 2018牛客多校第三场 C.Shuffle Cards
题意: 给出一段序列,每次将从第p个数开始的s个数移到最前面.求最终的序列是什么. 题解: Splay翻转模板题.存下板子. #include <bits/stdc++.h> using ...
- 工具——SVN常用命令
SVN一般都是团队合作做一个项目所需用到的,为了是版本的统一 ;1. Check out——从服务器端取得代码 把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check ...
- npm错误总结
You cannot publish over the previously published version 1.0.1." : xxx 发布时一定要修改package.json的版本号 ...
- vue-transition-fade
<!Doctype> <html> <head> <meta charset="utf-8"> <meta name=&quo ...
- 转:RBAC权限控制
名词解释: RBAC:Role-Based Access Control,基于角色的访问控制 关键词: RBAC,Java Shiro,Spring Security, 一. RBAC 要解决 ...
- java属性为什么没多态,而是方法多态
定义 java多肽的特性:方法具有多态性,属性却没有. 准备 基类: 子类: 测试类: 结果: 分析如下 父类 a=new 子类,实际对象时子类.由于向上转型,我们可以用父类在编译期间代替子类,使得编 ...
- 【Foreign】朗格拉日计数 [暴力]
朗格拉日计算 Time Limit: 10 Sec Memory Limit: 128 MB Description Input Output 仅一行一个整数表示答案. Sample Input 5 ...
- 之江学院第0届校赛 qwb去面试 (找规律)
Description 某一天,qwb去WCfun面试,面试官问了他一个问题:把一个正整数n拆分成若干个正整数的和,请求出这些数乘积的最大值. qwb比较猥琐,借故上厕所偷偷上网求助,聪明的你能帮助他 ...
- JSP页面中格式化日期为指顶格式
有时候在页面中显示直接从数据库获取的日期时候会出现英文的日期格式.比如:
- Linux下面无线网络配置
原文:http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html 配置 WLAN 特定参数 iwconfig ethX essid ...