欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

maven 使用Nexus私服的搭建

Java Web water 4070℃ 0评论

1、 为什么使用Nexus

       
如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下
载构件无疑加大了仓库的负载和浪费了外网带宽,如果网速慢的话,还会影响项目的进程。很多情况下项目的开发都是在内网进行的,连接不到maven仓库怎么
办呢?开发的公共构件怎么让其它项目使用?这个时候我们不得不为自己的团队搭建属于自己的maven私服,这样既节省了网络带宽也会加速项目搭建的进程,
当然前提条件就是你的私服中拥有项目所需的所有构件。

 

2、Nexus下载

       下载地址:http://www.sonatype.org/nexus/go

 

3、Nexus启动

       我下载的是zip包,解压后进入\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\,根据操作系统类型选择文件夹,我选的是windows-x86-32文件夹,进入后可看到如下所示bat文件。

双击console-nexus.bat运行。游览器中输入http://127.0.0.1:8081/nexus/,出现图(2)所示就代表nexus已经启动成功。


 

8081为默认的端口号,要修改端口号可进入nexus-2.1.2-bundle\nexus-2.1.2\conf\打开nexus.properties文件,修改application-port属性值就可以了。

默认的用户名和密码:admin/admin123,登录后看到图(3)所示:

 

图(3)

 

4、Nexus仓库

     nexus的仓库类型分为以下四种:

               group: 仓库组

               hosted:宿主

              proxy:代理

              virtual:虚拟

 

            首次登陆nexus后可以看到以下一个仓库组和多个仓库。

 

 


   Public Repositories:  仓库组

                      3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库

                      Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库

                      Central: 用来代理maven中央仓库中发布版本构件的仓库

                      Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库

                      Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库

                      Releases: 用来部署管理内部的发布版本构件的宿主类型仓库

                      Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库

 

4.1、创建Nexus宿主仓库

在Repositories选项页的菜单栏上点击Add按钮会出现如下所示,选择要添加的仓库类型。

 

这里我点击添加宿主类型的仓库,在仓库列表的下方会出现新增仓库的配置,如下所示:


 点击save按钮后就会在仓库列表中看到刚才新增的仓库。

4.2、创建Nexus代理仓库

点击菜单栏上的Add按钮后选择Proxy Repository,看到如下所示配置界面:

 

 

 

4.3、创建Nexus仓库组

仓库组和仓库关系是一对多的关系,一个仓库组可以指向多个仓库。

点击菜单栏上的Add按钮选择Repository Group就可以看到仓库组的配置界面,如下所示:


 

点击save后就可在仓库列表中看到新增的仓库组了,项目中如果要下载构件的话,配置文件中一般都用仓库组的URL。

5、修改Maven配置文件从Nexus下载构件

1)如果想对操作系统的所有用户统一配置maven,则只需修改maven\conf\setting.xml
文件就可以了,如果只想对用户单独配置maven,只需将conf\setting.xml文件复制到C:\Documents and
Settings\Administrator\.m2文件夹下(我这里假设系统装在c盘,用户为Administrator)。

 

2)
 打开setting.xml文件,可以看到如下代码:

 

Java代码  收藏代码

  1. <!– localRepository    

  2.    | The path to the local repository maven will use to store artifacts.    

  3.    |    

  4.    | Default: ~/.m2/repository     

  5.   <localRepository></localRepository>    

  6.  –>  

 

表示如果不设置localRepository,maven会默认将本地仓库建到/.m2/repository文件夹下。

设置localRepository如下代码所示:

 

Html代码  收藏代码

  1. <localRepository>F:\myCenterRepository</localRepository>    

 

表示在myCenterRepository文件夹下建立本地仓库。个人建议不要采用默认的仓库地址,因为项目如果很多的话,那么本地仓库所占的磁盘空间就比较多了,所以指定仓库地址到其他盘符,更方便管理。

 

5.2、在POM文件中配置Nexus仓库

在项目的pom文件中添加如下代码:

 

Xml代码  收藏代码

  1. <repositories>       

  2.     <repository>       

  3.       <id>nexus</id>       

  4.       <name>my-nexus-repository</name>       

  5.       <url>http://127.0.0.1:7788/nexus/content/groups/public/</url>       

  6.       <releases>       

  7.         <enabled>true</enabled>       

  8.       </releases>       

  9.       <snapshots>       

  10.         <enabled>false</enabled>       

  11.       </snapshots>       

  12.     </repository>       

  13.   </repositories>       

  14.   <pluginRepositories>       

  15.     <pluginRepository>       

  16.       <id>nexus</id>       

  17.       <name>my-nexus-repository</name>       

  18.       <url>http://127.0.0.1:7788/nexus/content/groups/public/</url>       

  19.       <releases>       

  20.         <enabled>true</enabled>       

  21.       </releases>       

  22.       <snapshots>       

  23.         <enabled>false</enabled>       

  24.       </snapshots>            

  25.     </pluginRepository>       

  26.   </pluginRepositories>       

 

在pom文件中配置只对当前项目有效,而实际开发中不可能在每个项目中重复配置信息,所以不建议在pom文件中配置。

 

5.3、在setting.xml文件中配置Nexus仓库

1)maven提供了profile来配置仓库信息,如下所示:

 

Xml代码  收藏代码

  1. <profiles>    

  2.     <profile>    

  3.       <id>myprofile</id>    

  4.       <repositories>    

  5.             <repository>    

  6.                 <id>central</id>                                       

  7.                 <url>http://central</url>                          

  8.                 <releases>    

  9.                     <enabled>true</enabled>    

  10.                 </releases>    

  11.                 <snapshots>    

  12.                     <enabled>true</enabled>    

  13.                 </snapshots>    

  14.             </repository>    

  15.         </repositories>       

  16.          <pluginRepositories>    

  17.             <pluginRepository>    

  18.               <id>central</id>    

  19.               <url>http://central</url>    

  20.               <releases>    

  21.                 <enabled>true</enabled>    

  22.               </releases>    

  23.               <snapshots>    

  24.                 <enabled>false</enabled>    

  25.               </snapshots>    

  26.             </pluginRepository>    

  27.         </pluginRepositories>    

  28.     </profile>    

  29. </profiles>    

 

 

 

2) 激活profile

Xml代码  收藏代码

  1. <activeProfiles>    

  2.     <activeProfile>myprofile</activeProfile>    

  3.   </activeProfiles>    

 

3)配置镜像

Xml代码  收藏代码

  1. <mirrors>    

  2.     <mirror>       

  3.      <id>nexus</id>        

  4.      <url>http://127.0.0.1:7788/nexus/content/groups/public/</url>       

  5.      <mirrorOf>*</mirrorOf>       

  6.    </mirror>    

  7.  </mirrors>    

 

这里配置mirrorOf的值为*,代表maven的所有访问请求都会指向到Nexus仓库组。

 

6、部署构件到Nexus仓库

6.1、maven部署

1) 修改pom文件

在pom文件中添加如下配置:

Xml代码  收藏代码

  1. <distributionManagement>    

  2.        <repository>    

  3.            <id>my-nexus-releases</id>    

  4.            <url>http://127.0.0.1:7788/nexus/content/repositories/releases/</url>    

  5.        </repository>    

  6.            

  7.        <snapshotRepository>    

  8.            <id>my-nexus-snapshot</id>    

  9.            <url>http://127.0.0.1:7788/nexus/content/repositories/snapshots/</url>    

  10.        </snapshotRepository>    

  11.   </distributionManagement>    

 2)在setting.xml文件中添加认证信息:

Xml代码  收藏代码

  1. <servers>    

  2.      <server>    

  3.       <id>my-nexus-releases</id>    

  4.       <username>admin</username>    

  5.       <password>admin123</password>    

  6.     </server>    

  7.     <server>    

  8.       <id>my-nexus-snapshot</id>    

  9.       <username>admin</username>    

  10.       <password>admin123</password>    

  11.     </server>    

  12. </servers>    

 上面的配置中我用的是超级管理员的账户,开发项目中可以改为具有部署构件权限的用户就可以了。

3)执行部署

测试的构件项目信息如下:

Xml代码  收藏代码

  1. <groupId>com.ez</groupId>    

  2.   <artifactId>TestJar</artifactId>    

  3.   <version>1.0</version>    

  4.   <packaging>jar</packaging>    

  5.   <name>TestJar</name>    

 

从上面的信息中可以看出构件为发布版本,所以部署构件的话会自动部署至releases仓库中。

 

在命令行中执行:mvn clean deploy

如果之前没用执行过该命令,maven会自动到中央仓库中下载部署所需的插件。最后在命令行中看到如下所示就代表构件已经部署成功。

 

 

到nexus的releases仓库中查看刚刚部署好的构件信息如下所示:

 

如果部署失败的要检查一下用户是否有部署的权限,目标仓库是否允许部署,是否缺少部署所需的构件。

6.2、手动部署

手动部署构件则更为简单了,在nexus的仓库列表中点击要部署的目标仓库,然后点击Artifact Upload选项卡看到下图所示:

 

通过以上配置运用Nexus搭建的私服基本上可以用了,更多配置需求可参考Nexus book.

Nexus book下载地址:http://download.csdn.net/detail/yaoqinzhou1943/4589583

===============================

私服是什么

私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视。Nexus是常用的私用Maven服务器,一般是公司内部使用。下载地址是http://www.sonatype.org/nexus/go。默认端口8081,这里我选择最新版nexus-2.5.0-04。

常用功能

Nexus常用功能就是:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。

开启Nexus服务后访问url地址http://localhost:8081/nexus/(推荐使用自己的ip地址),之后登录系统,用户名密码分别是:admin/admin123.

最频繁的就是点击左侧菜单栏的Repositories按钮

一 般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar 包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去 这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。代理站点下载成功后再下载至本机。笔者 认为,其实Maven这个自带的默认仓库一般情况下已经够大多数项目使用了。特殊情况时在配置新的仓库,指定url即可,一般熟悉ExtJS的人操作这个Nexus都没什么问题,单词不是很难,不明白的查查单词基本差不多。就是如果Sonatype公司对其做了国际化的处理就更好了。


hosted   类型的仓库,内部项目的发布仓库

releases 内部的模块中release模块的发布仓库

snapshots 发布内部的SNAPSHOT模块的仓库

3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去

proxy   类型的仓库,从远程中央仓库中寻找数据的仓库

group   类型的仓库,组仓库用来方便我们开发人员进行设置的仓库



maven项目索引

下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能



保存后后台会运行一个任务,点击菜单栏的Scheduled  Tasks选项即可看到有个任务在RUNNING 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如spring-core




就可以检索出它的相关信息,包括怎么配置依赖信息。我们要想使用这个私服仓库,先在项目pom中配置相关私服信息

指定仓库

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <repositories>  

  2.         <repository>  

  3.             <id>nexus</id>  

  4.             <name>nexus</name>  

  5.             <url>http://192.168.1.103:8081/nexus/content/groups/public/</url>  

  6.             <releases>  

  7.                 <enabled>true</enabled>  

  8.             </releases>  

  9.             <snapshots>  

  10.                 <enabled>true</enabled>  

  11.             </snapshots>  

  12.         </repository>  

  13.     </repositories>  


指定插件仓库


[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <pluginRepositories>  

  2.         <pluginRepository>  

  3.             <id>nexus</id>  

  4.             <name>nexus</name>  

  5.             <url>http://192.168.1.103:8081/nexus/content/groups/public/</url>  

  6.             <releases>  

  7.                 <enabled>true</enabled>  

  8.             </releases>  

  9.             <snapshots>  

  10.                 <enabled>true</enabled>  

  11.             </snapshots>  

  12.         </pluginRepository>  

  13.     </pluginRepositories>  

这样只有本项目才在私服下载组件
这样这个Maven项目构建的时候会从私服下载相关依赖。当然这个配置仅仅是在此项目中生效,对于其他项目还是不起作用。如果相对Maven的其他项目也生效的话。需要修改全局的settings.xml文件。

修改settings.xml为



追加激活profile

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <activeProfiles>  

  2.          <activeProfile>central</activeProfile>  

  3.           

  4.       </activeProfiles>  

之后所有本机的Maven项目就在私服下载组件。(这样比较好)


项目的发布

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <distributionManagement>  

  2.         <repository>  

  3.             <id>user-release</id>  

  4.             <name>User Project Release</name>  

  5.             <url>http://192.168.1.103:8081/nexus/content/repositories/releases/</url>  

  6.         </repository>  

  7.   

  8.         <snapshotRepository>  

  9.             <id>user-snapshots</id>  

  10.             <name>User Project SNAPSHOTS</name>  

  11.             <url>http://192.168.1.103:8081/nexus/content/repositories/snapshots/</url>  

  12.         </snapshotRepository>  

  13.     </distributionManagement>  

注意配置了还是发布项目到私服失败,原因为没有权限
配置权限在settings.xml
 
 
 http://www.yicixing.net
 
 然后运行发布
clean deploy
在控制台发布成功
然后进入到私服上的仓库中,看一下确实存在刚刚发布的项目
 
 
 
 
 
 
 
 

宿主库——3rd party

假如我们下载了Oracle的驱动程序jar包想给其他项目组使用,就需要上传该jar包。选中宿主库——3rd  party,之后选择Artifact Upload上传至宿主空间。
 




最后点击上传




转载请注明:学时网 » maven 使用Nexus私服的搭建

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!