我设置了自己的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>
答案 0 :(得分:2)
正确处理您的案例的方法是在Nexus本身添加新存储库,而不是添加到pom。这是Nexus存储库管理器的巨大优势。
您需要以管理员身份转到Nexus,并将sonatype
快照存储库添加为新的代理存储库。请参阅documentation。
一旦被Nexus添加并编入索引,您就应该通过maven构建解决工件。
我希望这会有所帮助。