解决maven工程无法获取远程仓库上的构件
2013-09-24 11:12
387 查看
工程结构:
test-aggregator
test-parent
test-son
其中test-aggregator是聚合工程,用于把所有子工程的构建过程串起来,并充当parent工程,定义公共的配置和变量。test-son依赖于test-parent
现象:
如果将所有工程都下载到本地,然后从task-aggregator里执行maven package,整体构建可以成功
但是如果仅下载test-son,然后从test-son里执行maven package,则构建失败,报错:
[ERROR] Failed to execute goal on project test-son: Could not resolve dependenci
es for project net.kyfxbl.test:test-son:jar:0.0.1-SNAPSHOT: Could not find artif
act net.kyfxbl.test:test-parent:jar:0.0.1-SNAPSHOT -> [Help 1]
实际上这个时候在远程仓库里已经有test-parent的构件了
当maven执行构建时,如果引入了依赖,首先会到本地仓库找,如果本地仓库找不到,则会去远程仓库找。如果远程仓库也没有找到,则构建报错
这里由于只下载了test-son,并且此前没有在本地构建过test-parent,所以本地仓库里没有test-parent的构件。但是远程仓库里明明有,却获取不到,就比较奇怪了
原因如下:
首先我们的settings.xml里配置了一个镜像,将对中央仓库的请求,转发到nexus私服上
然后在项目的pom里,没有配置任何远程仓库,所以就会默认使用pom4.0里的中央仓库作为远程仓库
查看pom4.0里的配置:
这里关键是把<snapshots>设置为false,不允许下载SNAPSHOT版的构件,所以虽然我们已经把test-parent这个构建deploy到了私服里,但是无法被test-son下载到,因此test-son构建报错
解决方法有2个:
一个是在自己项目的pom中额外声明私服地址,把snapshots设置为true;但是这个私服地址与settings.xml里配置的镜像重复了
另一个办法是在自己项目的pom中覆盖central的配置,把snapshots设置为true
最后综合考虑,还是选择了后一种方案
大小: 136.9 KB
查看图片附件
test-aggregator
test-parent
test-son
其中test-aggregator是聚合工程,用于把所有子工程的构建过程串起来,并充当parent工程,定义公共的配置和变量。test-son依赖于test-parent
现象:
如果将所有工程都下载到本地,然后从task-aggregator里执行maven package,整体构建可以成功
但是如果仅下载test-son,然后从test-son里执行maven package,则构建失败,报错:
[ERROR] Failed to execute goal on project test-son: Could not resolve dependenci
es for project net.kyfxbl.test:test-son:jar:0.0.1-SNAPSHOT: Could not find artif
act net.kyfxbl.test:test-parent:jar:0.0.1-SNAPSHOT -> [Help 1]
实际上这个时候在远程仓库里已经有test-parent的构件了
当maven执行构建时,如果引入了依赖,首先会到本地仓库找,如果本地仓库找不到,则会去远程仓库找。如果远程仓库也没有找到,则构建报错
这里由于只下载了test-son,并且此前没有在本地构建过test-parent,所以本地仓库里没有test-parent的构件。但是远程仓库里明明有,却获取不到,就比较奇怪了
原因如下:
首先我们的settings.xml里配置了一个镜像,将对中央仓库的请求,转发到nexus私服上
<mirrors> <mirror> <id>nexus</id> <name>internal nexus repository</name> <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
然后在项目的pom里,没有配置任何远程仓库,所以就会默认使用pom4.0里的中央仓库作为远程仓库
查看pom4.0里的配置:
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
这里关键是把<snapshots>设置为false,不允许下载SNAPSHOT版的构件,所以虽然我们已经把test-parent这个构建deploy到了私服里,但是无法被test-son下载到,因此test-son构建报错
解决方法有2个:
一个是在自己项目的pom中额外声明私服地址,把snapshots设置为true;但是这个私服地址与settings.xml里配置的镜像重复了
另一个办法是在自己项目的pom中覆盖central的配置,把snapshots设置为true
<!-- 覆盖central的设置,允许下载snapshot的构件 --> <repositories> <repository> <id>central</id> <name>Maven Central Repository</name> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
最后综合考虑,还是选择了后一种方案
大小: 136.9 KB
查看图片附件
相关文章推荐
- 02、eclipse创建远程仓库后无法提交代码,获取代码报错的解决方法
- Maven设置snapshot无法在远程仓库下载的问题解决
- 在本地仓库有jar包的情况下,Maven工程依然报错Missing jar包的解决办法
- maven的eclipse插件在增加依赖(Add Dependency)时无法搜索远程仓库
- git无法push本地代码至远程仓库解决方法(附git一点芝麻那么大的原理)
- Maven获取工程相关仓库的源码和javadoc方法
- Nexus搭建Maven私服(二) 分发构件至远程仓库
- git服务器创建,冲突解决,远程仓库获取指定文件
- Maven部署构件至远程仓库
- Maven部署工程和远程仓库配置
- Maven部署构件至远程仓库
- Maven部署构件至远程仓库 .
- maven获取远程仓库中的包,下载到本地仓库
- Maven部署构件至远程仓库
- Maven 分布构件至远程仓库
- 解决“使用svn时,无法连接maven仓库”的问题。
- nginx 使用http_x_forwarded_for 无法获取到远程访问ip的解决方法
- Maven 无法从仓库获取dependency Jar包时处理
- M2Eclipse:Maven Eclipse插件无法搜索远程库的解决方法
- Maven入门教程四----分发构件至远程仓库