ITKeyword,专注技术干货聚合推荐

注册 | 登录

解决maven工程无法获取远程仓库上的构件

kyfxbl 分享于 2013-09-24

推荐:maven中央仓库被屏蔽的解决方案

一般情况下,在.m2文件夹下面的setting.xml文件里面插入如下代码即可: <mirror> <id>osc</id> <mirrorOf>central</mirrorOf> <url>http://maven.oschi

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

工程结构:

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,

推荐:M2Eclipse:Maven Eclipse插件无法搜索远程库的解决方法

使用Eclipse安装了maven插件之后,创建Maven工程,发现添加依赖“Add Dependency”的时候无法自动搜索远程库。 如果不能搜索远程库那用这个插件有啥用撒。。。

并且此前没有在本地构建过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>

最后综合考虑,还是选择了后一种方案

推荐:Maven之——eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51829146 在别的机子上创建一个maven工程,复制到本机上导入,出现pom.xml文件错误,提示错

工程结构: test-aggregator test-parent test-son 其中test-aggregator是聚合工程,用于把所有子工程的构建过程串起来,并充当parent工程,定义公共的配置和变量。test-son依赖于test-parent

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。