mvn包忽略pom.xml中的存储库

时间:2019-04-17 16:03:43

标签: java maven repository nexus

我们无法使用mvn软件包从远程存储库中提取项目。在maven安装的文件夹config / settings.xml中,我们声明内部中央存储库:

<mirrors>
  <mirror>
    <id>advnexus</id>
    <mirrorOf>*</mirrorOf>
    <url>http://internalserver/nexus/content/groups/public</url>
  </mirror>
</mirrors>

这适用于此仓库中托管的所有jar文件。但是,我们还有一些其他的jar文件,我们将其推送到我们控制之下的服务器上并运行Sonatype Nexus。因此,在项目的pom.xml中,我们将远程仓库设置为:

<repositories>
  <repository>
    <id>companynamenexus</id>
    <name>Company Name Project Repo</name>
    <url>http://nexus.companyname.com:8081/repository/project-name</url>
    <layout>default</layout>
    <spanshots>
      <enabled>false</enabled>
    </spanshots>
  </repository>
</repositories>

运行构建时,它会从主存储库中提取所有需要的jar文件,但是与使用pom.xml中的存储库相比,尝试提取该存储库中不存在的jar文件只是超时。 / p>

请注意,在settings.xml镜像部分中,我尝试将<mirrorOf>更改为居中而不是*,但这只会引起其他错误。

我也尝试过将这个仓库作为settings.xml中的辅助镜像,尝试注释掉settings.xml中的镜像并将其作为pom.xml中的附加存储库,所有这些都没有找到正确的组合。似乎是一个简单的问题,但是答案却使我们难以理解。

1 个答案:

答案 0 :(得分:0)

最佳解决方案:不要尝试访问两个不同的内部Nexus,而应在Nexus之一中设置一个存储库组,其中包含所有其他存储库(可以是内部或外部托管或代理)。然后,您只需在该存储库组上设置一个镜像条目就可以了。

第二个最佳解决方案:将镜像条目更改为<mirrorOf>*,!companynamenexus</mirrorOf>,并在<repositories>的{​​{1}}部分中定义其他存储库。