为什么要搭建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私服上,作为一个第三方引用,这在多人协作开发不同功能模块时优势就显现了。
如何搭建私服?
- 安装配置maven
- 安装nexus
- 配置nexus
下面逐步实现:
1、安装配置maven(主要要先安装JDK)
此处忽略,可以搜索一下相关文章,与JDK的安装类似,下载–>解压–>配置环境变量,官方下载地址为
http://maven.apache.org/download.cgi
2、安装nexus(以win10为例)
解压,解压目录为:
配置端口和访问项目名
编辑文件…\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私服搭建完成,基本符合项目开发中的需要,该过程经历了多方搜索,下载过官方英文文档研究,终于搞定了。继续学习中,敬请交流讨论!
作为一名程序员,应该具备学习研究新技术的激情和动力。