4

我们在团队中使用 Maven/Nexus/Hudson。我们的 Hudson 服务器上的 Maven 版本是 3.0.4,并且在构建作业时无法下载快照依赖项。我不确定发生了什么变化(团队中没有做任何事情,所以他们说),但发生了一些事情,因为周一早上工作的构建在周一下午停止工作。

当我尝试在 Hudson 中构建具有快照依赖项的项目时,出现此错误:

[WARNING] The POM for com.company:my-client:jar:1.9-SNAPSHOT is missing, no dependency information available

我相信我已经将问题归结为 Maven 没有下载maven-metadata.xml文件,因此无法解决对时间戳版本的依赖关系。例如,在我的本地构建中(使用 Maven 3.0.3),我在 Maven 输出中看到了这一点:

Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/maven-metadata.xml
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/maven-metadata.xml (1004 B at 20.0 KB/sec)
Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.pom
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.pom (3 KB at 57.5 KB/sec)
...
Downloading: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.jar
...
Downloaded: http://ip:8080/nexus/content/groups/public/com/company/my-client/1.9-SNAPSHOT/my-client-1.9-20130625.202822-1.jar (10 KB at 153.9 KB/sec)

两个版本都在访问我们的 Nexus 存储库,而且 Hudson Maven 从它访问非快照依赖项没有问题,所以这不是连接问题。

为什么 Maven 无法识别 SNAPSHOT 并下载maven-metadata.xml以获取依赖项的最新时间戳版本?

4

2 回答 2

2

经过一番努力,我们发现我们的 hudson 用户的 settings.xml 文件删除了 nexus 配置文件。这似乎具有无法查询快照存储库的效果,尽管它可以从发布存储库中获取工件。

在我们修复它之前对文件的最后一次编辑是 5 月 29 日,所以为什么工作在 6 月 24 日早上而不是下午建立仍然是一个谜。也许某些东西正在被缓存并且被刷新。

于 2013-07-01T21:12:06.620 回答
2

我也遇到了这个问题。我们通过将源存储库添加到我们的项目 POM 中无意中解决了这个问题。尽管仍然通过我们的镜像进行路由,但此更改允许项目将元数据解析为最新的快照版本。

例子:

<project>
    <repositories>
        <repository>
            <id>XYZ-SNAPSHOTS</id>
            <url>http://nexus.xyz.org/nexus/content/groups/enterprise-snapshots/</url>
            <releases><enabled>false</enabled></releases>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
    </repositories>
</project>

事后,我发现我们没有正确配置镜像。真正的问题似乎是在 settings.xml 中的镜像上没有启用快照,即使它们在 Nexus 本身中启用。

当我在项目中添加 repos 时,我没有考虑它就启用了快照,然后允许 Maven 解析快照。这修复了它,但更好的解决方案是更新 settings.xml 以修复所有镜像存储库。

作为参考,这里是正确的 settings.xml 配置(取自Sonatype):

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>
于 2019-01-15T18:51:55.107 回答