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

时间:2018-05-08 17:47:05

标签: java maven docker nexus

描述

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

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

nexus存储库位于docker集群内。

pom.xml中定义的URL都重定向到相同的nexus存储库。

因此,为了从我的localhost访问nexus存储库,我们已经配置了私有DNS来解析nexus repo的“git.consignet.intranet”。 然后要访问docker中的nexus repo,我只能使用它的服务名称“nexus-repo”。

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

$ComputerName = Get-AzureRmVM | select Name
$DriveLetter = "C"
$Path = "NewDirectory"

foreach ($ComputerNames in $ComputerName)
{
    New-Item -Path \\

$ComputerName\$DriveLetter$\$Path -type directory -Force 
}

问题

在我的localhost中构建时,我无法使用docker中的服务名访问repo以解析主机。

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

Maven输出

Maven会抛出以下错误消息:

<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.consignet.intranet”dns。

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

问题

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

1 个答案:

答案 0 :(得分:2)

使用个人资料:

<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进行构建,具体取决于您所处的环境。现在(希望)将问题简化为阅读环境标记。