maven存储库代理混乱

maven存储库代理混乱,maven,settings,nexus,Maven,Settings,Nexus,我正在使用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

我正在使用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是逐个搜索所有这些协议,还是只搜索第一个

  • 
    中心的
    http://localhost:8081/nexus/content/repositories/central
    遥远的
    http://localhost:8081/nexus/content/repositories/remote-代理连接中心
    第三方
    http://localhost:8081/nexus/content/repositories/thirdparty
    科德豪斯
    http://localhost:8081/nexus/content/repositories/codehaus-快照
    公众的
    http://localhost:8081/nexus/content/groups/public
    

    我最后一个困惑是关于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>
    
    
    远程代理nexus central
    真的
    http
    repo1.maven.org/maven2
    8080
    
    我可以告诉您,我们使用本地Nexus,并让所有用户的settings.xml中都包含以下内容:

    <mirror>
        <id>our-mirror</id>
        <name>Org Public Mirror</name>
        <url>http://host/nexus/content/groups/public</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
    
    
    我们的镜子
    组织公共镜像
    http://host/nexus/content/groups/public
    *
    
    这会导致maven的任何调用转到Nexus以获取依赖项。关于maven首先在local.m2中查找的问题,您是对的

    Nexus代理许多存储库,并拥有它们的联合(对于调用它的maven进程)。 这意味着开发人员的本地maven只知道一个存储库:Nexus。Nexus将提供其代理/托管存储库中所需的所有依赖项id

    至于代理,我们有一个组织代理,但是Nexus在组织中(它将代理配置为允许访问外部世界),因此maven不需要这种特定的配置

    我希望这能为您提供一些入门信息


    我强烈建议您查看与Nexus/Maven相关的配置:

    将Maven与Nexus结合使用的正确设置记录在《Nexus存储库管理》一书中。示例settings.xml为。阅读说明并注意,您需要为中央存储库添加覆盖以启用快照


    完成此操作后,您不需要在settings.xml中配置代理,因为它在本地网络中不需要代理即可使用(通常)。相反,您可以在Nexus中配置代理设置,这样它就可以进入您代理的存储库(如Central)。记录了全局代理配置,如果需要,您还可以配置每个代理存储库的详细信息,例如,如果您需要代理存储库的用户名/密码,因为它是私有的

    链接好像断了。。404找不到..如果可能的话,请您修复一下。。