Sky's blog

我和我追逐的梦

常用链接

统计

其他链接

友情链接

最新评论

初学maven(3)-使用nexus替代artifactory作为maven私服

    之前看到过一些Nexus的介绍,由于刚开始接触maven时使用的私服是artifactory,因此没有太在意。今天想着既然Nexus能有胆量出来混,应该有点真本事才是,看了一下nexus的安装介绍,挺简单的,试试无妨。因此装上小试了一下,结果喜出望外,nexus的表现非常不错,尤其是在开启远程索引之后,简直太方便了。

    于是决定放弃artifactory改而使用nexus作为自己的maven私服。恩,惭愧,颇有点喜新厌旧的味道,artifactory才装上来没有几天,就惨遭抛弃......

    整理了一下,全过程记录如下:

1. 首先下载Nexus
    从官网http://nexus.sonatype.org/download.html下载下载最新版本,因为是在windows上安装,因此下载的是zip版本,大小大概是16m。
   
2. 安装
    简单解压缩下载的zip包到安装目录就可以了。
    可执行文件在%nexus安装目录%\nexus-webapp-1.0.0\binjsw\windows-x86-32下:
        InstallNexus.bat/UninstallNexus.bat是安装/卸载nexus为windows service,如果需要设置nexus为开机自动启动就可以安装为windows service然后设置启动方式为自动。
        Nexus.bat是直接在命令行中启动Nexus,如果不想安装Nexus为windows service,可以用这个文件来手工控制Nexus的启动退出。
       
       
3. 配置nexus

    首先登录,默认地址http://localhost:8081/nexus/,默认用户名密码为admin/admin123.
   
    最重要的一件事情就是开启远程索引下载,索引这个功能实在是太好用了。
   
    nexus默认是关闭远程索引下载功能的,主要是担心会造成对服务器的巨大负担,需要我们手工开启。
   
    开启的方式:
        点击Administration菜单下面的Repositories,将这三个仓库Apache Snapshots,Codehaus Snapshots,Maven Central的Download Remote Indexes修改为true。然后在这三个仓库上分别右键,选择Re-index,这样Nexus就会去下载远程的索引文件。
       
4. 配置maven
    要让maven使用nexus作为私服,需要做一些设置,使用和原来设置artifactory相似的方法。修改~/.m2/settings.xml.
   
    增加nexus的profile:

    <profile>
      
<id>nexus</id>
      
<repositories>
        
<repository>
            
<id>nexus</id>
            
<name>local private nexus</name>
            
<url>http://localhost:8081/nexus/content/groups/public</url>
            
<releases><enabled>true</enabled></releases>
            
<snapshots><enabled>false</enabled></snapshots>
        
</repository>
        
<repository>
            
<id>nexus</id>
            
<name>local private nexus</name>
            
<url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
            
<releases><enabled>false</enabled></releases>
            
<snapshots><enabled>true</enabled></snapshots>
        
</repository>
      
</repositories>
      
<pluginRepositories>
        
<pluginRepository>
            
<id>nexus</id>
            
<name>local private nexus</name>
            
<url>http://localhost:8081/nexus/content/groups/public</url>
            
<releases><enabled>true</enabled></releases>
            
<snapshots><enabled>false</enabled></snapshots>
        
</pluginRepository>
        
<pluginRepository>
            
<id>nexus</id>
            
<name>local private nexus</name>
            
<url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
            
<releases><enabled>false</enabled></releases>
            
<snapshots><enabled>true</enabled></snapshots>
        
</pluginRepository>
       
</pluginRepositories>
    
</profile>
 
    修改activeProfiles为:
      <activeProfiles>
        
<activeProfile>nexus</activeProfile>
      
</activeProfiles>
     
5. 为nexus增加Artifact
    有些特殊的Artifact无法从maven官网仓库中下载,比如sun的一些包,只好自己自行下载后添加到私服中。
    在nexus中我选择将这些Artifact上传到默认安装就存在的仓库3rd Party中,右击仓库名,选择Upload Artifact。
   
6. 在eclipse中使用索引功能
    原来试过,使用artifactory私服也可以使用Artifact的索引功能,但是由于不知道怎么设置远程仓库的index,我只会设置
    当前artifactory私服已有的Artifact的索引,对于还没有导入到artifactory私服的Artifact就没有办法索引了,很不方便,
    毕竟刚开始使用maven时,所有用到的Artifact都是本地和私服没有而需要到远程仓库取的。
   
    nexus中可以很方便的得到远程仓库的Artifact的索引,在上面“3. 配置nexus”就介绍过。下面介绍如何在eclispe里面
    设置和使用索引功能:
    1) 打开Maven Indexes 的eclispe view
        在eclispe中选择window -> show view -> other ... -> Maven -> Maven Indexes
    2) 添加nexus的index
        右键菜单中选"add index", 在弹出的"Add Respository index"窗口中填入:
            Repository URL: http://localhost:8081/nexus/content/groups/public
            Repository Id: nexus
            Index Update URL: 放空,暂时还不知道该怎么填
        加入后eclispe会自动load一次index信息,然后就可以在新加入的index下可以拉出极大数量的Artifact信息。
    3) 测试一下使用
        找个pom.xml文件,右键 -> Add Dependency, 然后填入一个关键词,比如我填入mina,马上填出和mina相关的一些
        选择,我找到apache mina,双击最新一个版本。会自动在pom.xml文件中增加以下内容:

        <dependency>
            
<groupId>org.apache.directory.mina</groupId>
            
<artifactId>mina-core</artifactId>
            
<version>0.9.5</version>
        
</dependency>

        然后Maven自动下载jar包,再将jar包加入项目的build path,全程自动化处理,真是爽啊。

7. 为nexus增加新的proxy  repository
        方法很简单,administration -> Repositories -> add -> proxy,填写后保存即可。但是要注意,nexus不会自动将新加入的repository添加到group中,而我们一般喜欢直接使用默认的"public repository" group, 比如前面我在maven的profile中就只设置了这一个URL: http://localhost:8081/nexus/content/groups/public。因此需要手工修改"public repository" group的设置,将刚才添加的proxy  repository加到组中。
        推荐的repository有:
                1) jboss         http://repository.jboss.com/maven2/
                2) sun            http://download.java.net/maven/2/
                3)k-int           http://developer.k-int.com/maven2/
                        加入这个纯粹是因为它有sun的jmxri/jmxtools这些Artifact,强烈鄙视sun,自己的官方repository居然没有。
                4)sonatype        http://repository.sonatype.org/content/groups/public/
8. 总结
    很明显,nexus无论是在界面,功能,操作上,都比artifactory强大的多。
    因此推荐大家使用nexus替代artifactory作为maven私服。
   
updates:
1.  2008.11.28 
由于公司升级操作系统,告别老旧不堪的windows2000升级到vista,因此重新安装了nexus. 新版本的nexus似乎增加了不少小的功能比如对remote index的支持,具体没有深究,不过能不断更新实在是很令人欣慰。以后就打算用nexus了。

2. 2009.10.15
    一年来陆续发现了一些比较不错的maven仓库
    1) fedora.is    
        http://fedora.is/maven/
    2) ibiblio
        http://mirrors.ibiblio.org/pub/mirrors/maven2/
        这个是ivy的官网,东西比较多
    3) rothamsted
        http://ondex.rothamsted.bbsrc.ac.uk/nexus/content/repositories/releases/
        http://ondex.rothamsted.bbsrc.ac.uk/nexus/content/repositories/wso2/
        有一些比较偏门的东西

posted on 2008-09-06 23:16 sky ao 阅读(10299) 评论(10)  编辑  收藏 所属分类: project building

评论

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服[未登录] 2008-09-07 17:18 tan

兄弟,nexus在哪有下,它的官方网我一直上不上去
我现在也用artifactory作为私服,感觉界面不太好使
有空联系哦:tywo45@163.com  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2008-09-07 18:39 飘然

我就是在官网直接下载的,没有遇到问题啊。不知道你那里是怎么回事,你再试试。实在不行,考虑发到你邮箱?  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服[未登录] 2008-09-09 08:26 tan

确实下不下来的!从08-25号开始找了,一直没找到.
兄弟共享发一份吧
tywo45@163.com
谢谢!  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2008-09-09 12:07 飘然

晚上回去给你发好了,现在在公司,速度太慢。  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2008-09-09 15:38 家有小猫's Java Blog

和Apache Archiva相比有什么优势?  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2008-09-28 23:04 魔豆

这里我很喜欢,都是博主自己积累的经验,赞一个!!  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服[未登录] 2008-12-27 21:24 小龙

在服务器上用不起,在springside里找了一个nexus出来,可以访问了
但是mvn 怎么和nexus结合使用呢,网上没有这方面的资料
lxitwangyulong@gmail.com  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2009-06-11 11:39 jianfeng008cn

兄弟,搞了好几天了 ,碰到一问题,按照你的做法,添加了第三方包json-lib,在eclipse中也能自动添加,但是jar包还是缺失,导致项目上有红叉。  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2010-02-05 14:48 hayasi.chen@gmail.com

看了你的文章很有帮助,但是有个问题。如果开启远程下载的话,是不是会下载所有的包。我现在只是跟新索引文件就已经400多M了。我现在只想把工程需要的文件放到maven仓库,。怎么做???只能一个个上传到maven仓库吗??还是有什么捷径??  回复  更多评论   

# re: 初学maven(3)-使用nexus替代artifactory作为maven私服 2010-02-07 11:22 sky ao

不会下载所有的包,只有你明确给出请求和根据这些请求递推出来的依赖包来被下载。这个东西只是实现proxy + cache而已。

index文件的确比较多,几个大站都是超过100m,部分是》500m的。如果你对空间敏感,可以选择不下载index。

最后一个问题,估计是你还没有理解nexus、artifactory的作用。重复一次,他们只是proxy + cache,你需要获取的文件实际在远程仓库比如maven2官网仓库。当你发出请求时,这个请求时先连接到nexus、artifactory,它们检查本地cache,发现没有这个文件才去远程获取,然后保存到本地cache,这样下一次你再请求同样的文件的时候就可以直接从cache中获取,而且不必每次每个文件都远程下载。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: