在我的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 构建解析的工件。
希望对您有所帮助。
我设置了自己的 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 构建解析的工件。
希望对您有所帮助。