我刚刚为我们公司安装了最新版本的 Nexus,它运行良好。我们添加了几个第 3 方存储库,其中一个没有 .index 文件。因此,Nexus 似乎无法对其进行索引,本地 maven 也无法在该存储库中请求 deps。绝对是不幸的。
除了手动下载 deps 并将它们安装在我们的第 3 方“托管”存储库中之外,还有什么方法可以解决这个问题?
有问题的 Maven 仓库:http ://wicketstuff.org/maven/repository
谢谢!
我刚刚为我们公司安装了最新版本的 Nexus,它运行良好。我们添加了几个第 3 方存储库,其中一个没有 .index 文件。因此,Nexus 似乎无法对其进行索引,本地 maven 也无法在该存储库中请求 deps。绝对是不幸的。
除了手动下载 deps 并将它们安装在我们的第 3 方“托管”存储库中之外,还有什么方法可以解决这个问题?
有问题的 Maven 仓库:http ://wicketstuff.org/maven/repository
谢谢!
在 Nexus 中将“下载远程索引”设置为“假”。
然后在本地运行“mvn -U clean package”。
(编辑:重读了我最初的答案后,我认为它并不完全清楚也不准确,所以我正在对其进行编辑以澄清某些部分。另外,OP 添加了一条我也想回答的评论。)
因此,Nexus 似乎无法对其进行索引,本地 maven 也无法在该存储库中请求 deps。
我不确定你的意思是“ Nexus 无法索引它”。如果存储库不提供 Nexus 索引,则其内容将“默认”不可搜索。但是一旦从这个存储库中下载了工件,Nexus 绝对能够索引工件。关于第二部分,“本地 maven 也不能要求该存储库中的 deps ”,您确定吗?
对我来说,Nexus 索引(即 Lucene 索引)“只是”使存储库可搜索的一件好事,但当然可以代理非索引存储库(Nexus 不能指望世界各地的所有存储库都提供 Nexus 索引)。因此,您的设置实际上一定有其他问题。
假设您想使用 wicket SNAPSHOTS,我已经设置了 Nexus 并使用了如下所示的 POM:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.samples.wicket</groupId>
<artifactId>nexus-wicket-testcase</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>nexus-wicket-testcase</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.5-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
然后,我将http://wicketstuff.org/maven/repository添加为Nexus 中的快照存储库,并将其列在公共存储库组中。最后,我按照配置 Maven 以使用单个 Nexus 组中的说明配置了 Maven 。
使用此设置,我在运行时得到以下输出,例如eclipse:eclipse
:
$ mvn 日食:日食 ... [INFO] 快照 org.apache.wicket:wicket:1.5-SNAPSHOT:检查来自中央的更新 下载:http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket/1.5-SNAPSHOT/wicket-1.5-20091109.012145-88.pom 2K 下载(wicket-1.5-20091109.012145-88.pom) [INFO] 快照 org.apache.wicket:wicket-parent:1.5-SNAPSHOT:检查来自中央的更新 下载:http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket-parent/1.5-SNAPSHOT/wicket-parent-1.5-SNAPSHOT.pom 22K 下载(wicket-parent-1.5-SNAPSHOT.pom) 下载:http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.pom 2K 下载 (slf4j-api-1.5.8.pom) 下载:http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-parent/1.5.8/slf4j-parent-1.5.8.pom 7K 下载(slf4j-parent-1.5.8.pom) 下载:http://localhost:8081/nexus/content/groups/public/org/apache/wicket/wicket/1.5-SNAPSHOT/wicket-1.5-20091109.012145-88.jar 下载 1944K (wicket-1.5-20091109.012145-88.jar) 下载:http://localhost:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar 下载 22K (slf4j-api-1.5.8.jar) ... [信息] --------------------------------------------- ------------------------- [信息] 构建成功 [信息] --------------------------------------------- ------------------------- [INFO] 总时间:2 分 2 秒 [INFO] 完成时间:2009 年 11 月 11 日星期三 06:12:01 CET [INFO] 最终内存:9M/79M [信息] --------------------------------------------- -------------------------
在我看来一切都很好。
...但是本地 maven 肯定知道如何从 repo 中获取 deps,groupid + artifactid + build number 为它提供了应用程序的完整路径。
是的,这就是为什么我认为您在某个地方存在设置问题。如果 Maven 和 Nexus 配置正确,Maven 应该能够在正确的存储库中找到依赖项(例如 wicket)。仔细检查您settings.xml
和/或您的依赖项定义。
为了让 nexus 对其进行索引,它必须爬取它找到的所有目录路径,但它似乎没有这样做
这不是事情的运作方式。如果存储库不提供索引,则 Nexus 只能索引已下载的工件。Nexus 不会抓取存储库。