maven搭建nexus私服过程

通常,使用maven过程中,想要下载依赖的jar包,团队中的每一个人都需要从maven提供的中央仓库中下载,安装到本地的缓存中(本地磁盘),但是使用了nexus后,那些依赖(以及依赖的依赖)只需要从远程仓库中下载一次,这样节省的时间将会是Maven检查依赖新版本以及下载依赖的时间。另外,利用nexus私服,通过发布内部项目构建到私服下,团队之间可以共享内部项目构建的快照版本和发布版本的机制。

以下总结团队开发过程中搭建nexus私服的过程:

1、安装Nexus。

1.1、访问http://nexus.sonatype.org/downloads/。点击下载链接,下载适用于你平台的存档文件。Nexus目前有ZIP和Gzip归档的TAR两种可用形式。(安装方式自己网上学习去。。。)

1.2、运行Nexus。

访问Nexus:启动nexus后,它的默认地址是localhost:8081。Nexus在一个名为Jetty的servlet容器中运行,它使用一个名为Tanuki Java Service wrapper的本地服务包裹器启动。要使用Nexus,启动一个web浏览器然后输入URL:http://localhost:8081/nexus。点击web页面右上角的“Log In”链接,默认的NEXUS用户名和密码是"admin" 和 "admin123"。

开启远程索引下载:Nexus带有三个重要的代理仓库,有中央Maven仓库,Apache快照仓库,和Codehaus快照仓库。它们中的每一个仓库都包含了数千(或数万)的构件,下载
每个仓库的所有内容是不切实际的。处于这个原因,大部分仓库维护了一个编录了整个内容的Lucene索引,以提供快速和有效的搜索。Nexus使用这些远程索引搜索构件,但是默认设置我们关闭了索引下载。要下载远程索引,
1.2.1. 点击Administration菜单下面的Repositories,更改三个代理仓库的Download Remote Indexes为true。
1.2.2. 在每个代理仓库上右击然后选择Re-index。这会触发Nexus下载远程的索引文件

Nexus下载整个索引可能需要好几分钟,但是一旦你下载好之后,你就能够搜索aven仓库的所有内容了。

2、配置Maven使用Nexus
要使用Nexus,你需要配置Maven去检查Nexus而非公共的仓库。为此,你需要编辑在你的~/.m2/settings.xml文件中的mirror配置。

2.1、使用nexus中央代理仓库

要配置Maven去查阅Nexus而非中央Maven仓库,在你的~/.m2/settings.xml文件中添加为Nexus配置Maven Settings (~/.m2/settings.xml)”的mirror配置。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

 <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
 
  <servers>
  <server>  
    <id>releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
  </server>  
 <server>  
  <id>snapshots</id>  
  <username>admin</username>  
  <password>admin123</password>  
  </server>  
  <server>   
<id>thirdparty</id>   
<username>admin</username>
<password>admin123</password>   
</server>
  </servers>

</settings>


在你将Nexus配置成所有仓库的镜像之后,Maven现在会从本地的Nexus安装查阅,而非去外面查阅中央Maven仓库。如果对Nexus有一个构件请求,本地的Nexus安装会提供这个构件。如果Nexus没有这个构件,Nexus会从远程仓库获取这个构件,然后添加至远程仓库的本地镜像。要测试Nexus如何工作的,从你的本地Maven仓库中删除一个目录,然后运行Maven构建。如果你删除了~/.m2/repository/org,你会删除一大堆的依赖(包括Maven 插件)。下次你运行Maven的时候,你应该看到如下的信息:
$ mvn clean install
...
Downloading: http://localhost:8081/nexus/content/groups/public/...
3K downloaded


3、为缺少的依赖添加仓库

如果你已经将你的Maven settings.xml配置成使用Nexus作为所有公共仓库和所有公共快照仓库的镜像,你可能会遇到一些项目不能够从你的本地Nexus获取需要的构件。这很常见,因为你经常会构建一些在pom.xml中自定义一组repositories和snapshotRepositories的项目。如果你正在构建开源项目,或者往你的配置中添加了自定义的第三方Maven仓库,那么这种情况就会发生。

对于一些没有被加入到中央Maven仓库的组件,我们可以先用SVN签出网上的组件,假设安装了Subversion并且你正在命令行运行Subversion,执行下面的命令:

$ svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk shindig
... Subversion will checkout the trunk of Apache Shindig ...
$ cd shindig
$ mvn install

4、部署构建至nexus

不同的组织有不同的理由将构件部署至内部仓库。在有数百(或数千)开发人员的大型组织内,一个内部Maven仓库可以是不同部门之间共享发布版和开发快照版本的有效手
段。大部分使用Maven的组织最终都会开始将发布版本和构件部署到一个共享的内部仓库。使用Nexus,可以很容易的部署构件至一个宿主仓库。要部署构件至Nexus,在distributionManagement中提供仓库URL,然后运行mvndeploy。Maven会通过一个简单的HTTP PUT将项目POM和构件推入至你的Nexus安装。最初版本的Nexus没有为宿主仓库提供任何的安全措施。如果你为宿主仓库开启了部署功能,任何人可以连接并部署构件至这个仓库。如果你的Nexus安装能够从公共Internet访问,你绝对会想要将这些仓库的部署功能关闭,或者将你的Nexus安装放到一个如Apache HTTPD的web服务器背后。

4.1、部署发布版

要部署一个发布版构件至Nexus,你需要配置你项目POM中distributionManagement部分的repository。在pom.xml添加以下配置:

<project>

...

  <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Internal Releases</name>
            <url>http://192.168.2.161:8081/nexus/content/repositories/releases</url>
        </repository>
    </distributionManagement>

....

</project>

通过执行mvn deploy命令部署构件。$ mvn deploy

4.2、部署快照版

类似发布版,添加配置:

<project>
...
<distributionManagement>
...
<snapshotRepository>
<id>Snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
...
</distributionManagement>

...
</project>

4.3、部署第三方构件

你的Maven项目可以依赖于一个构件,这个构件不能从中央Maven仓库或任何其它公开Maven仓库找到。有很多原因可能导致这种情形发生:这个构件可能是私有数据库的
JDBC驱动如Oracle,或者你依赖于另一个JAR,它既不开源也无法免费获得。在这样的情况下,你就需要手动拿来这些构件然后发布到你自己的仓库中。Nexus提供宿主
的"third-party"仓库,就是为了这个目的。

mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14  -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\ojdbc14.jar  -Durl=http://localhost:8081/nexus/content/repositories/thirdparty  -DrepositoryId=thirdparty

执行该命令,需要nexus的认证,不然会报异常:Return code is: 401, ReasonPhrase: Unauthorized.

往setting.xml文件中添加nexus的用户名和密码:

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

</server>



。。。。。。。。。待完善。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章