Java 具有已知未知主机的多个maven存储库 描述

Java 具有已知未知主机的多个maven存储库 描述,java,maven,docker,nexus,Java,Maven,Docker,Nexus,我正在配置一个maven构建,在两个不同的环境中执行,第一个在本地主机中,第二个在docker集群中使用jenkins 两个版本将使用相同的pom.xml文件。 在pom.xml文件中,我引用了一个私有nexus存储库 nexus存储库位于docker集群内 pom.xml中定义的两个URL都重定向到同一个nexus存储库 因此,为了从我的本地主机访问nexus存储库,我们配置了私有DNS,将“git.delicatet.intranet”解析为nexus repo。 然后要访问docker内部

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

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

nexus存储库位于docker集群内

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

因此,为了从我的本地主机访问nexus存储库,我们配置了私有DNS,将“git.delicatet.intranet”解析为nexus repo。 然后要访问docker内部的nexus repo,我可以只使用它的服务名称“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>
最后考虑 每个环境中只能解析一个URL:

在开发环境中,我将能够解析“git.delegate.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>

发展
nexus aws
Nexus亚马逊
http://nexus.consignet.intranet/repository/maven-releases/
詹金斯
nexus群集
簇内连接
http://nexus-repo/repository/maven-releases/

然后使用
mvn-Pjenkins
mvn-Pdev
构建,具体取决于您所处的环境。现在(希望如此)问题归结为读取环境标志。

告诉maven使用localhost:8081,并根据您的环境使用端口转发/映射来指向最终位置。虽然此答案提供了实现目标的替代路线,这是否意味着可能不会以OP尝试的方式添加多个存储库?也就是说,如果无法访问某个存储库,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>