百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> Maven项目无法获取Sonatype Nexus中SNAPSHOT的包
分享文章到:

Maven项目无法获取Sonatype Nexus中SNAPSHOT的包

发布时间:01/15 来源: 浏览: 关键词:
下面我们来看一篇关于Maven项目无法获取Sonatype Nexus中SNAPSHOT的包的例子,希望文章能够帮助到各位朋友。

今天在一个Maven项目中调用某个包的SNAPSHOT版本,总是提示找不到该jar包,主仓库使用了局域网中的Sonatype Nexus服务器,项目pom.xml相关配置如下:

 <project>
   <repositories>
     <repository>
       <id>nexus</id>
       <name>Local Nexus Repository</name>
       <url>http://192.168.1.200:8080/content/groups/public/</url>
       <releases>
         <enabled>true</enabled>
       </releases>
       <snapshots>
         <enabled>true</enabled>
       </snapshots>
     </repository>
   </repositories>
 
   <dependencies>
     <dependency>
       <groupId>com.example.tools</groupId>
       <artifactId>example-tools</artifactId>
       <version>1.0.2-SNAPSHOT</version>
     </dependency>
   </dependencies>
 </project>

配置文件中已经启用了snapshots,但maven在下载example-tools-1.0.2-SNAPSHOT.jar的时候总是出错,提示无法找到该包。

首先我登录Nexus服务器,在Repositories中检查Public Repositories下面Configuration已经将Releases和Snapshots(分别代表本地的正式版服务和测试版服务)放到了仓库中,如下图:


nexus-repository

突然想到Maven调用SNAPSHOT版本的时候首先获取maven-metadata.xml文件,然后根据文件中所定义的最后一个SNAPSHOT版本时间戳来决定使用服务器上的具体的哪个jar包,但是在本例中在浏览器中无法直接访问http://192.168.1.200:8080/content/groups/public/com/example/tools/example-tools/1.0.2-SNAPSHOT/maven-metadata.xml,直接显示404错误,按照Sonatype官方文档的指示依次排除各种情况,都没有发现,在最后面加上?describe参数,发现显示的错误是FILE NOT FOUND,但是服务器上这个文件是存在的。后来直接使用snapshots仓库进行访问,即直接访问
http://192.168.1.200:8080/content/repositories/snapshots/com/example/tools/example-tools/1.0.2-SNAPSHOT/maven-metadata.xml是可以直接访问的。

但是为什么在Public Repositories和Public Snapshot Repositories中为什么都不能访问呢?后来在Sonatyp Nexus的讨论组中找到了答案,原来我使用的Nexus是1.4,版本太老了,无法识别Maven 3.x之后的这个metadata格式,因此程序就不在Public Repositories中进行公开了,因此需要将Nexus进行升级了。

按照官方的升级文档,可以从1.x升级到2.7.x,如果想升级到最新的2.11的话就需要再从2.7.x进行升级,但是2.7.x目前也足够使用了,于是决定将现在用的1.4升级到2.7.2。

Nexus2.5之后的版本开始使用JDK7了,所以需要先将服务器上的JDK升级到7.0,然后从http://www.sonatype.org/nexus/archived/下载Nexus 2.7.2的zip包,下载完成之后解压,将压缩包中的nexus-2.7.2-03程序复制原来的nexus server安装根目录下,然后修改nexus-2.7.2-03/conf/nexus.properties文件,新的配置文件比原来的要简洁明了很多,根据需要调整配置文件即可。首先执行原来的nexus服务卸载,然后再执行bin/nexus install安装新的nexus服务,再启动服务就可以了,非常简单,这样原来的仓库文件可以继续使用,而且是完全兼容的,根目录下的文件结构如下:

20160119164337

这里需要说明在Windows 2003下面运行 nexus console 命令之后会出现下面的错误:

 wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | 2016-01-19 16:45:15 INFO  [WrapperListener_start_runner] - org.sonatype.nexus.bootstrap.jsw.JswLauncher - Starting with arguments: [./conf/jetty.xml]
jvm 1    | Unable to open process: 拒绝访问。 (0x5)
jvm 1    | 2016-01-19 16:45:15 ERROR [WrapperListener_start_runner] - org.sonatype.nexus.bootstrap.jsw.JswLauncher - Failed to start
jvm 1    | java.lang.NullPointerException: null
jvm 1    |  at org.sonatype.nexus.bootstrap.jsw.JswLauncher.doStart(JswLauncher.java:53) ~[nexus-bootstrap-2.7.2-03.jar:2.7.2-03]
jvm 1    |  at org.sonatype.nexus.bootstrap.jsw.WrapperListenerSupport.start(WrapperListenerSupport.java:37) ~[nexus-bootstrap-2.7.2-03.jar:2.7.2-03]
jvm 1    |  at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManager.java:2788) [wrapper-3.2.3.jar:3.2.3]
wrapper  | <-- Wrapper Stopped

这应该是java wrapper的一个bug,不需要理会,只要使用nexus install安装成windows服务然后在启动服务即可。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有6人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板