gpt4 book ai didi

java - 具有已知未知主机的多个 Maven 存储库

转载 作者:行者123 更新时间:2023-11-30 02:10:34 25 4
gpt4 key购买 nike

描述

我正在配置一个 Maven 构建,以便在两个不同的环境中执行,第一个环境在我的本地主机中,第二个环境使用 jenkins 在 docker 集群中执行。

两个版本都将使用相同的 pom.xml 文件。在 pom.xml 文件中,我引用了一个私有(private) Nexus 存储库。

nexus 存储库位于 docker 集群内部。

pom.xml 中定义的两个 URL 都重定向到同一个 Nexus 存储库。

因此,为了从我的本地主机访问 nexus 存储库,我们配置了私有(private) DNS 以将“git.consignet.intranet”解析为 nexus 存储库。然后,要访问 docker 内的 nexus 存储库,我可以仅使用其服务名称“nexus-repo”。

pom.xml的相关内容如下所示:

<project>
...
<repositories>
<repository>
<id>nexus-aws</id>
<name>Nexus Amazon</name>
<url>http://nexus.consignet.intranet/repository/maven-releases/</url>
</repository>
<repository>
<id>nexus-cluster</id>
<name>Nexus Inside Cluster</name>
<url>http://nexus-repo/repository/maven-releases/</url>
</repository>
</repositories>
...
</project>

问题

在我的本地主机中构建时,我无法使用 docker 内的服务名称来访问存储库来解析主机。

在 jenkins 内部(在 docker 容器内)构建时,我无法访问我们的 DNS 服务器来解析 URL。

Maven 输出

Maven 抛出以下错误消息:

[ERROR] Failed to execute goal on project DB1ConsignetWebService: Could not 
resolve dependencies for project DB1ConsignetWebService:DB1ConsignetWebService:war:1.0-SNAPSHOT:
Failed to collect dependencies at Consignet:jaxb-api:jar:2.2.7-facets-1.0.5:
Failed to read artifact descriptor for Consignet:jaxb-api:jar:2.2.7-facets-1.0.5:
Could not transfer artifact Consignet:jaxb-api:pom:2.2.7-facets-1.0.5
from/to my-repo1 (http://nexus-repo/repository/maven-releases/): nexus-repo:
Unknown host nexus-repo -> [Help 1]

最终考虑因素

每个环境只能解析一个 URL:

在开发环境中,我只能解析“git.conssignet.intranet”dns。

在 jenkins 构建环境中,我只能解析“nexus-repo”dns。

问题

如果maven中的存储库是未知主机,是否可以忽略它?如果可以,我该如何配置?

最佳答案

使用配置文件:

<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus-aws</id>
<name>Nexus Amazon</name>
<url>http://nexus.consignet.intranet/repository/maven-releases/</url>
</repository>
</repositories>
</profile>

<profile>
<id>jenkins</id>
<repositories>
<repository>
<id>nexus-cluster</id>
<name>Nexus Inside Cluster</name>
<url>http://nexus-repo/repository/maven-releases/</url>
</repository>
</repositories>
<profile>
</profiles>

然后使用 mvn -Pjenkinsmvn -Pdev 进行构建,具体取决于您所在的环境。问题现在(希望)减少为读取环境标志。

关于java - 具有已知未知主机的多个 Maven 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50239476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com