在我的pom中定义<Repositories>,通过我自己的Nexus Server下载

Define <Repositories> in my pom and download through my own Nexus Server

我设置了自己的 Nexus 服务器,当我将 setting.xml 添加到我的 ~/.m2/ 时它工作正常。它可以通过我的 Nexus 服务器从 public 存储库下载 artificats。

但是,我需要依赖一个项目(sphinx4),它不在 Central 中,而是在 nexus-oss 存储库中。它不在我的 Nexus 服务器中。根据文档,我将其添加到我的 POM 中:

 <repositories>
        <repository>
            <id>snapshots-repo</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases><enabled>false</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>

以及对我的 POM 的依赖:

<dependencies>
      <dependency>
          <groupId>edu.cmu.sphinx</groupId>
          <artifactId>sphinx4-core</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
      <dependency>
        <groupId>edu.cmu.sphinx</groupId>
        <artifactId>sphinx4-data</artifactId>
        <version>1.0-SNAPSHOT</version>
      </dependency>
    </dependencies>

我对 Nexus 和 Maven 很陌生。我的理解是,由于该库不在我的 Nexus 服务器中,因此由于我的 POM 中的存储库定义,Maven 将自动从 OSS 存储库下载工件。但是,它不能。这是错误消息:

[ERROR] Failed to execute goal on project wordex: Could not resolve 
dependencies for project com.bombw.core:wordex:jar:0.0.1-SNAPSHOT: The 
following artifacts could not be resolved: edu.cmu.sphinx:sphinx4-
core:jar:1.0-SNAPSHOT, edu.cmu.sphinx:sphinx4-data:jar:1.0-SNAPSHOT: Could 
**not find artifact edu.cmu.sphinx:sphinx4-core:jar:1.0-SNAPSHOT in nexus 
(http://www.bombword.com:8081/nexus/content/groups/public) -> [Help 1]**

突出显示的错误消息似乎表明构建正在从我的 Nexus 服务器中寻找工件,但失败了。

如果我删除自定义 setting.xml 并且不涉及我自己的 Nexus 服务器,我的 pom 工作正常。它可以从存储库定义下载工件。

我的 Nexus 服务器应该配置正确,因为它可以从我的 Nexus 服务器中的 public 存储库和缓存下载所有其他需要的工件。

这可能是什么原因造成的?想不通。

已编辑:

<mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://www.bombword.com:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

针对您的情况的正确方法是在 Nexus 本身中添加新的存储库,而不是添加到 pom.xml 文件中。这是 Nexus 存储库管理器的巨大优势。

您需要以管理员身份访问您的 Nexus,并将 sonatype 快照存储库添加为新的代理存储库。参见 documentation

一旦添加并被 Nexus 索引,您应该得到由 maven 构建解析的工件。

希望对您有所帮助。