搭建Maven私服那点事

摘要:本文主要介绍在CentOS7.1下使用nexus3.6.0搭建maven私服,以及maven私服的使用(将自己的Maven项目指定到私服地址、将第三方项目jar上传到私服供其他项目组使用)

一、简介

  Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。
maven和ant都是软件构建工具(软件管理工具),maven比ant更加强大,已经取代了ant,jar包的声明式依赖描述。maven有jar包的仓库。svn是一个软件的版本控制工具,是一个协同开发工具。svn的仓库存放的是项目的源码,历史版本的备份,声明每次版本的修改情况。

二、私服应用场景

有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。
如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。总归主要是两点:

1、自己maven私服更容易维护,公司开发从maven私服迁出jar到本地仓库更快

2、有些公司未开放外网给开发人员

三、部署Nexus

3.1 部署环境

3.2 配置Maven

 下载解压

?
1
2
3
wget http: //mirror .bit.edu.cn /apache/maven/maven-3/3 .5.2 /binaries/apache-maven-3 .5.2-bin. tar .gz
tar -zxvf apache-maven-3.5.2-bin. tar .gz
mv apache-maven-3.5.2 /usr/local/maven3 .5

配置环境变量

?
1
vim /etc/profile

  在最末尾加上

?
1
2
3
4
#maven
MAVEN_HOME= /usr/local/maven3 .5
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME} /bin

  然后再使用下面命令使配置生效

?
1
source /etc/profile

  查看是否生效

3.3 部署Nexus3.6.0

下载解压

?
1
2
3
tar -zxvf apache-maven-3.5.2-bin. tar .gz
mv nexus-3.6.0-02 /usr/local/
cd /usr/local/nexus-3 .6.0-0.2 /bin

启动

?
1
. /nexus start

查看日志

到这一步,我们的nexus就算配置成功了,图中这并不影响使用nexus

四、上传本地jar包到maven私服

现在我们来介绍怎么把本地的maven项目jar包提交到maven私服上,供其他开发人员使用

4.1 创建一个maven仓库

首先点击Security>Users 创建一个用户,我这里测试创建的用户/密码是:deployment/deployment,因为后面提交本地项目jar到私服仓库会用到

然后点击,设置>Repository>Repositories>Create repository>maven2(hosted)创建maven项目,注意Deployment policy一定要设置成allow redeploy

上面提到了我们要创建一个maven2(hosted)项目,那这里为什么是创建maven2(hosted)项目,不是创建其他的项目呢,接下来我们进行介绍respository

4.2 respository介绍

proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用;
Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里;
Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存。

4.3 使用eclipse批量提交jar到maven私服

首先设本地maven的settings.xml配置问价,在servers标签里添加用户密码支持

?
1
2
3
4
5
<server>
     < id >jeecg< /id >
     <username>deployment< /username >
     <password>deployment< /password >
< /server >

然后再项目的pom.xml添加远程发布的私服仓库地址

?
1
2
3
4
5
6
7
<distributionManagement> 
       <repository> 
          < id >jeecg< /id
          <name>jeecg Repository< /name
          <url>http: //172 .16.4.166:8081 /repository/jeecg/ < /url
        < /repository
< /distributionManagement >

最后利用eclipse进行上传,步骤如下图

我们在console打印成功并在Nexus 私服上可以查看得到上传成功,如下图:

在nexus管理页面查看刚刚上传的jar包信息

至此,我们的项目jar包提交到私服完成

五、指定maven地址下载jar包到本地

上面的我们提交了jar包到maven私服,现在迁出jar包时填写那个maven私服地址,看是否能迁出jar包

首先,将项目pom.xml文件的repositories标签里添加上

?
1
2
3
4
5
6
7
<repository>
        < id >jeecg< /id >
        <name>jeecg Repository< /name >
        <url>http: //maven .jeecg.org /nexus/content/repositories/jeecg < /url >
        <snapshots>
     <enabled> false < /enabled >
< /repository >

然后再maven的settings.xml文件中配置本地仓库地址

?
1
<localRepository>D:\mave_responsity< /localRepository >

之后我们就可以迁出这些war包到我们配置的本地仓库了

 

私服搭建最佳实践

按照上面配置是实现了私服搭建,但是,这样的配置,如果我们创建一个项目,就需要配置一次,很麻烦.有没有一种方法,只让我们配置一次,后面都不需要配置呢?

我们知道,maven有个setting.xml,其实,我们可以将上面的私服配置在maven的setting.xml里面.这样就可以实现了.

 至此,大功告成!!!

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值