在我的pom中定义<存储库>并通过我自己的Nexus服务器下载

时间:2015-09-01 06:18:32

标签: maven nexus

我设置了自己的Nexus服务器,当我将settings.xml添加到〜/ .m2 /时,它工作正常。它可以通过我的Nexus服务器从公共存储库下载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服务器中的公共存储库和缓存中下载所有其他所需的工件。

可能是什么原因引起的?无法弄清楚。

Editted:

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

1 个答案:

答案 0 :(得分:2)

正确处理您的案例的方法是在Nexus本身添加新存储库,而不是添加到pom。这是Nexus存储库管理器的巨大优势。

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

一旦被Nexus添加并编入索引,您就应该通过maven构建解决工件。

我希望这会有所帮助。