一、简单介绍

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架设私服。


三、nexus部署

 


第一步:下载nexus-webapp-2.6.2.war包,然后复制到tomcat下的webapps文件夹中

第二步:启动tomcat 默认登录账户密码为: admin  admin123 。点击右上角进行登录。

第三步:訪问​http://localhost:8080/项目名称/


使用nexus搭建Maven私服_jar包


四、  repository

Nexus仓库的默认的地址,nexus-2.1.2\WEB-INF\plexus.properties 中定义的

在Views/Repositories-->Repositories里进行配置, nexus里能够配置3种类型的仓库。各自是proxy、hosted、group

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列表。只是要注意浏览器缓存。

virtual:也是中央仓库镜像,支持M1老版本号


使用nexus搭建Maven私服_jar包_02

 

- hosted :宿主仓库 ,该仓库属于该公司私有的

        1. 3rd part : 第三方的jar包,可是该jar包没有在中心仓库保存,驱动.jar

    2. snapshot :測试版本号、镜像版本号  easyNet.war

    3. release  : 发行版本号

      - proxy  : 代理仓库  :代理中心仓库的jar包

        

      - public :仓库组 :虚拟的概念  能够包括其它的仓库

五、上传jar包到nexus

5.1 直接在nexus管理后台上传

直接选中你想要上传到哪个库中,能够设置组。这里以上传pig的jar为例。选择3rd party,然后填写maven的坐标(groupId+artifactId+version)。

使用nexus搭建Maven私服_上传_03


我们能够在浏览器中查看是否已经上传成功。这里能够看到已经有pig这个文件夹了。


使用nexus搭建Maven私服_版本号_04



5.2 使用myeclipse上传

在myeclipse中配置maven我在这里就不再说明了。网上有许多的资料。我们能够在myeclipse中新建一个web项目,命名为:nexusMaven,并为其加入maven支持。在生成的这个maven项目中找到pom.xml,进行例如以下配置。


<distributionManagement>
<!-- 公布到 快照版本号的仓库,即 測试版本号仓库 -->
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/snapshots/</url>
</snapshotRepository>
<!-- 公布到 发行版本号的仓库中,也能够公布到3rd party 仓库 -->
<repository>
<id>releases</id>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/repositories/releases/</url>
</repository>
</distributionManagement>



同一时候须要到我们的maven的conf文件夹下的settings.xml加入账号密码支持。大约在114行后面的servers中配置:

<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>


然后回到我们的myeclipse的项目中,右键这个项目。run as   ->  maven build  ,然后输入deploy进行部署。


使用nexus搭建Maven私服_上传_05



这样我们的project就上传到了私服中。

使用nexus搭建Maven私服_版本号_06


能够总浏览器中看到我们刚才上传的这个project。

使用nexus搭建Maven私服_xml_07



六、从私服下载(引用)jar包

相同,在前面新建的mavenproject中的pom.xml中进行配置。


<!-- 依赖pig.jar包,存在私服中  -->
<!-- maven坐标 -->
<dependency>
<groupId>pig</groupId>
<artifactId>pig</artifactId>
<version>0.12.1</version>
</dependency>
</dependencies>

<!-- 假如没有私服 。则 本地仓库找不到,则訪问中心仓库
假如有私服 :訪问顺序
首先訪问本地仓库
本地仓库没有。则訪问私服仓库
私服仓库也没有,则訪问中心仓库
-->
<!-- 载入的是 第三方项目使用的jar包 -->
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>public</name>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
</repository>
</repositories>

<!-- 载入的是maven生命周期插件的jar包 -->
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>public</name>
<url>http://127.0.0.1:8080/nexus-2.6.2/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>



总结:使用nexus来搭建maven私有服务器是很有用的功能,对于maven的环境搭建这里就不再重复啰嗦了。

项目组开发者开发时。仅仅要在项目的pom.xml文件里。加入例如以下pom.xml信息就可以获取私服的jar.假设加入其它的构件时,会先在nexus私服下载好。以后才会下载到本地。以后,假设发现私服已经存在某一jar包,则会直接从私服下载,假设没有再去网络上下载。这就是搭建私服的优点.