4

我刚刚为我们公司安装了最新版本的 Nexus,它运行良好。我们添加了几个第 3 方存储库,其中一个没有 .index 文件。因此,Nexus 似乎无法对其进行索引,本地 maven 也无法在该存储库中请求 deps。绝对是不幸的。

除了手动下载 deps 并将它们安装在我们的第 3 方“托管”存储库中之外,还有什么方法可以解决这个问题?

有问题的 Maven 仓库:http ://wicketstuff.org/maven/repository

谢谢!

4

2 回答 2

4

在 Nexus 中将“下载远程索引”设置为“假”。

然后在本地运行“mvn -U clean package”。

于 2012-05-07T09:38:51.760 回答
4

(编辑:重读了我最初的答案后,我认为它并不完全清楚也不准确,所以我正在对其进行编辑以澄清某些部分。另外,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 不会抓取存储库。

于 2009-11-09T06:33:57.013 回答