使用Nexus搭建Maven私服

为什么要搭建maven私服?

在多人协作的项目开发中,我们会用到Svn、Git等版本控制工具来管理我们的代码,这样可以实现代码的实时共享以及便于代码的统一管理,从此可以看出,Svn的功能在于组织代码。
而maven的道理类似版本控制系统,它其中一个功能就是组织项目中用到的jar包,进行统一管理,当用到某个jar包引用时,我们只需要简单的配置,就可以从maven库中获取我们想要的jar包,比如中央maven库https://repo1.maven.org/maven2/。那么问题来了,如果我们的项目处于内网无法访问外网,又如果中央maven库中不存在我们需要的jar包,该怎么办?此时为项目搭建一个maven私服就很有必要了。此时maven私服至少看解决以下问题:

1. 节省外网带宽。如果每个项目成员都从中央maven库下载jar包,势必会增加访问贷款,这是速度就慢从而影响构建速度和开发效率;maven私服可以实现当项目组某个成员从中央库下载jar包后,jar会存储在就私服上,当其他成员需要获取jar包时,将直接从私服中下载,私服一般搭建在内网,此时的速度和效率就可想而知了。
2. 稳定。当中央maven库出问题的时候,若私服上存在有需要的jar包是,完全不影响项目的构建。
3. 能够部署第三方构件。我们可以把自己的项目发布成jar包或war包,部署到maven私服上,作为一个第三方引用,这在多人协作开发不同功能模块时优势就显现了。

如何搭建私服?

  1. 安装配置maven
  2. 安装nexus
  3. 配置nexus

下面逐步实现:
1、安装配置maven(主要要先安装JDK)
此处忽略,可以搜索一下相关文章,与JDK的安装类似,下载–>解压–>配置环境变量,官方下载地址为
http://maven.apache.org/download.cgi

2、安装nexus(以win10为例)

  • 下载地址:https://www.sonatype.com/download-oss-sonatype
    这里写图片描述

  • 解压,解压目录为:
    这里写图片描述

  • 配置端口和访问项目名
    编辑文件…\nexus-3.3.1-01\etc\nexus-default.properties
    这里写图片描述

  • 启动nexus,进到目录…\nexus-3.3.1-01\bin,执行命令nexus/run,大概需要1分钟左右,当出现以下界面,说明成功启动,若不成功,大部分原因由于JDK版本的问题,nexus-3.3.1官方称需要JDK1.8,但我使用的是1.7.0_80,没有发现问题。
    这里写图片描述

  • 访问nexus,如:http://localhost:8082/nexus
    这里写图片描述
    没有登陆只能浏览不能进行相关配置,登录点击右上角的Sign in,默认用户名密码为:admin/admin123,登录后可以修改密码。
    这里写图片描述

3、配置nexus
登录进入配置界面
这里写图片描述

我们要搭建maven的私服,所以只看maven的仓库,主要有四个:
1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
2)maven-releases:私库发行版jar ,可以把第三方的jar包上传到该库,比如oracle的jar包
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务

到此,基本的就配置完了,下面可以用eclipse建立一个maven项目,把获取jar包地址指向私服地址。

  • 用eclipse建立maven项目,结构如下
    这里写图片描述
  • pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.lei</groupId>
    <artifactId>testmaven</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>testmaven Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <repositories>
    <repository>
        <id>nexus_public</id><!--可以任意-->
        <name>nexus repository</name>
        <url>http://localhost:8082/nexus/repository/maven-public/</url><!--私服地址-->
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    </repositories>

    <dependencies>
        <!-- servlet/jsp api -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>servlet-api</artifactId>
           <version>2.5</version>
           <scope>provided</scope>
       </dependency>
       <dependency>
           <groupId>javax.servlet.jsp</groupId>
           <artifactId>jsp-api</artifactId>
           <version>2.1</version>
           <scope>provided</scope>
       </dependency>

       <!-- jstl -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jstl</artifactId>
           <version>1.2</version>
       </dependency>

       <!-- slf4j -->
       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
           <version>${slf4j.version}</version>
       </dependency>

       <!-- junit -->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.8.2</version>
       </dependency>

       <!-- mysql driver -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.22</version>
       </dependency>

       <!-- sql server数据库驱动 <dependency> <groupId>net.sourceforge.jtds</groupId>
           <artifactId>jtds</artifactId> <version>1.3.0</version> </dependency> -->

    </dependencies>
    <build>
        <finalName>testmaven</finalName>
    </build>
</project>
  • 构建项目
    右键工程–>run as –>Maven install 项目就会根据pom.xml中配置的内容下载jar包到本地maven仓库,可以观察本地maven仓库目录是否有增加,下载jar包的顺序是先从私服下载,私服不存在就会从中央仓库下载。

从代理仓库maven-central我们可以获取大部分的jar包,但有一些jar包需要授权才能下载,比如oracle的驱动包,下面就以部署oracle驱动包到maven私服为例,介绍如何部署第三方的jar包到私服。

我们将把第三方jar包部署到maven-releases仓库上,也可以新建,但仓库类型需要是hosted。

1、在maven的配置文件settings.xml中加上用户信息,需要注意的是,这个配置文件是总的配置文件,也就是位于%maven安装目录%\conf\settings.xml的配置文件。在的节点上增加配置,如

<server>  
        <id>nexus_myjar</id>
        <username>admin</username>
        <password>admin123</password>
</server>

2、把第三方的jar包放在某个文件夹中,如E:\3thd jar,把oracle驱动包ojdbc6.jar放到里面

3、执行maven命令部署oracle驱动包,注意命令中的引号,当引号去掉的时候,会执行失败

mvn deploy:deploy-file “-DgroupId=com.oracle” “-DartifactId=ojdbc6” “-Dversion=11.2.0.4.0” “-Dpackaging=jar” “-Dfile=E:\3thd jar\ojdbc6.jar” “-Durl=http://localhost:8082/nexus/repository/maven-releases/” “-DrepositoryId=nexus_myjar”

参数说明:
● DgroupId、DartifactId、Dversion——表示的是构建的基本坐标,你需要根据你上次的jar包自行改变
● Dpackaging——表示的是上传的包的类型,一般为jar,不用改变,根据你的实际情况来改变。
● Dfile——表示的是你需要上传的包的地址
● Durl——表示的是你要上传到的私有仓库的地址
● DrepositoryId——表示你的身份信息,可以从第1步获取。

4、在项目中增加配置,测试是否可以下载jar包到本地maven仓库

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4.0</version>
</dependency>

至此,maven私服搭建完成,基本符合项目开发中的需要,该过程经历了多方搜索,下载过官方英文文档研究,终于搞定了。继续学习中,敬请交流讨论!


作为一名程序员,应该具备学习研究新技术的激情和动力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值