我正在使用maven 3.0(使用nexus设置)来构建我的项目并且正在构建失败:
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact directory:apacheds-core:jar:${apacheds_version} in central (http://localhost:8081/nexus/content/repositories/central)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:945)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:940)
我的基本困惑是:当maven在pom.xml中看到依赖关系时,如何在远程存储库中查找工件?
我目前的理解是:
首先查看本地仓库(.m2 / repository)。
如果不在那里找到,那么它将尝试搜索存储库标记下的settings.xml中指定的存储库。 问题:是否尝试了所有提到的存储库。 还是只是第一个?下面我提到了5个回购:maven一个接一个地搜索所有这些还是第一个?
<repositories>
<repository>
<id>central</id>
<url>http://localhost:8081/nexus/content/repositories/central</url>
</repository>
<repository>
<id>remote</id>
<url>http://localhost:8081/nexus/content/repositories/remote-proxy-nexus-central</url>
</repository>
<repository>
<id>thirdParty</id>
<url>http://localhost:8081/nexus/content/repositories/thirdparty</url>
</repository>
<repository>
<id>codehaus</id>
<url>http://localhost:8081/nexus/content/repositories/codehaus-snapshots</url>
</repository>
<repository>
<id>public</id>
<url>http://localhost:8081/nexus/content/groups/public</url>
</repository>
</repositories>
我最后的困惑是关于settings.xml中的代理部分。这些地点是什么:
<proxy>
<id>remote-proxy-nexus-central</id>
<active>true</active>
<protocol>http</protocol>
<host>repo1.maven.org/maven2</host>
<port>8080</port>
</proxy>
答案 0 :(得分:1)
我可以告诉您我们使用本地Nexus并让所有用户在他们的settings.xml中都有以下内容:
<mirror>
<id>our-mirror</id>
<name>Org Public Mirror</name>
<url>http://host/nexus/content/groups/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
这会导致maven的任何调用都转到Nexus获取依赖关系。你是对的maven第一次看当地的.m2。
Nexus代理许多存储库并且具有所有存储库的联合(对于调用它的maven进程)。 这意味着开发人员的本地maven只知道单个存储库:Nexus。 Nexus将在其代理/托管存储库中提供所有必需的依赖项ID。
至于代理,我们有一个组织代理,但Nexus在组织中(它配置了允许访问外部世界的代理),因此maven不需要这种特定的配置。
我希望这能为您提供一些入门信息。
我强烈建议您查看Nexus / Maven相关配置:http://www.sonatype.org/
答案 1 :(得分:0)