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 中查看索引,并可进行相应的搜索

小提示:

  1. 其它仓库配置可以参照上述过程。
  2. 可以通过Nexus OSS左侧菜单 Administration > Logging 查看相应的日志。
  3. 关于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>,即让所有的仓库都先经过私库,这样可以将远程下载的包缓存到本地

小提示:

  1. Maven安装目录下的 /conf/settings.xml 起全局控制作用。
  2. 用户目下的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:

  1. mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,id是唯一标识一个mirror就不多说了,name貌似没多大用,相当于描述,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。
  2. 镜像库并不是一个分库的概念,就是说当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载。但事实却不是这样,当第一个mirror中不存在a.jar的时候,并不会去第二个mirror中查找,甚至于,maven根本不会去其他的mirror地址查询。
  3. maven的mirror是镜像,而不是“分库”,只有当前一个mirror无法连接的时候,才会去找后一个,类似于备份和容灾。
  4. 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>

 

重要提示:

  1. 当发布到属性为snapshot的仓库时,工程自述说明小节中的 <version>,需要带上后缀 SNAPSHOT,否则会当成 release 发布。会收到 400 Bad Request 错误。
  2. 发布配置中的 <url> 地址一定要区分清楚。并在 release 与 snapshot 仓库里配置不同的地址。此外,id、name 要与Nexus中仓库的配置 configuration 中的内容一致。
  3. 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的更多相关文章

  1. 【Maven学习】Nexus OSS私服仓库的备份与迁移

    背景 在上一篇博客 [Maven学习]Nexus OSS私服仓库的安装和配置 中,我们已经在机房搭建好了新的Nexus OSS私服仓库.下面是两个版本的Nexus OSS私服仓库的对比图. 老的Nex ...

  2. 【Maven学习】Nexus OSS私服仓库的安装和配置

    背景 公司的代码依赖是通过Maven进行管理的,而Maven的私库我们使用的是Nexus,目前使用的版本是Nexus Repository Manager OSS 2.12.1. 但是由于之前我们搭建 ...

  3. Maven仓库搭建--nexus私服

    Maven仓库搭建--nexus私服(Linux环境) Maven仓库简介 Maven仓库分为本地仓库.远程仓库.私服.本文重点介绍私服的使用方法. 下载安装包 网址:http://www.sonat ...

  4. Ubuntu server下搭建Maven私服Nexus

    Ubuntu server下搭建Maven私服Nexus Maven私服Nexus的作用,主要是为了节省资源,在内部作为maven开发资源共享服务器来使用. 1.下载 通过root用户进去Ubuntu ...

  5. Maven仓库—Nexus环境搭建及简单介绍

    1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件--免费] NE ...

  6. Maven仓库-Nexus环境搭建及简单介绍

    1.    环境搭建 1.1  下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件——免费] NE ...

  7. Maven仓库—Nexus环境搭建及使用

    使用Sonatype Nexus搭建Maven私服后如何添加第三方JAR包 http://blog.csdn.net/yanjun008/article/details/42084109 Nexus介 ...

  8. 持续集成之三:搭建Maven私服Nexus

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7. ...

  9. 【Maven】Nexus(Maven仓库私服)下载与安装

    Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库 ...

随机推荐

  1. BZOJ4012 [HNOI2015]开店 【动态点分治 + splay】

    题目链接 BZOJ4012 题解 Mychael并没有A掉,而是T掉了 讲讲主要思路 在点分树上每个点开两棵\(splay\), 平衡树\(A\)维护子树中各年龄到根的距离 平衡树\(B\)维护子树中 ...

  2. Link Cat Tree (连喵树) 学习笔记

    Link Cat Tree 一.感性定义 所谓连喵树,即一种对森林支持修改,查询,连边,删边等操作的数据结构(姑且算她是吧).她用一颗颗互相连接的辅助树维护原森林的信息,辅助树相互连接的边叫虚边,辅助 ...

  3. 【BZOJ 1070】[SCOI2007]修车 费用流

    就是拆个点限制一下(两点一排一大片),这道题让我注意到了限制这个重要的词.我们跑网络流跑出来的图都是有一定意义的,一般这个意义就对应了问题的一种方案,一般情况下跑一个不知道对不对的方案是相对容易的我们 ...

  4. 运动目标前景检测之ViBe源代码分析

    一方面为了学习,一方面按照老师和项目的要求接触到了前景提取的相关知识,具体的方法有很多,帧差.背景减除(GMM.CodeBook. SOBS. SACON. VIBE. W4.多帧平均……).光流(稀 ...

  5. Codeforces Round #525 (Div. 2) F. Ehab and a weird weight formula

    F. Ehab and a weird weight formula 题目链接:https://codeforces.com/contest/1088/problem/F 题意: 给出一颗点有权值的树 ...

  6. HDU1859 最小长方形 (水

    最小长方形 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. Planning your upgrade with Upgrade Advisor

    Planning your upgrade with Upgrade Advisor You should use the Upgrade Advisor tool (if it is availab ...

  8. 【BZOJ2301】【HAOI2011】Problem b [莫比乌斯反演]

    Problem b Time Limit: 50 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 对于给出的n个询问,每次 ...

  9. [BZOJ1984]月下“毛景树”解题报告|树链剖分

    Description 毛毛虫经过及时的变形,最终逃过的一劫,离开了菜妈的菜园. 毛毛虫经过千山万水,历尽千辛万苦,最后来到了小小的绍兴一中的校园里.爬啊爬~爬啊爬~~毛毛虫爬到了一颗小小的“毛景树” ...

  10. [BZOJ3261&BZOJ3166]可持久化trie树及其应用

    可持久化trie树 可持久化trie树现在想来是比较好理解的了,但却看了一个下午... 相当于对于每个状态建立一条链(或者说一棵trie),求解的时候只要让两个点按照相同的步子走然后看sum的大小关系 ...