0

我了解 Nexus 应该下载外部依赖项,但公司 Nexus 服务器(我无法控制)无法访问互联网或下载外部 jar。

作为一种解决方法,我有 2 个 settings.xml 文件,我手动切换。一个 settings.xml 使用公司 Nexus 服务器作为内部 jars,另一个使用公司代理从默认的 Maven 存储库下载外部依赖项。一旦所有依赖项都在我的本地 Maven 存储库中,编译工作。

Nexus 的 settings.xml(不包括代理)

<settings>
    <mirrors>
        <mirror>
            <id>some-repo-mirror</id>
            <mirrorOf>*</mirrorOf>
            <url>https://brokennexus/repository/maven-public/</url>
        </mirror>
    </mirrors>

    <servers>
        <server>
            <id>some-repo-mirror</id>
            <username>me</username>
            <password>secret</password>
        </server>
    </servers>
</settings>

用于 Internet 的 settings.xml(不包括镜像和服务器)

<settings>
    <proxies>
        <proxy>
            <id>company-proxy-http</id>
            <active>true</active>
            <protocol>http</protocol>
            <username>me</username>
            <password>secret</password>
            <host>proxy.server</host>
            <port>8080</port>
        </proxy>
        <proxy>
            <id>company-proxy-https</id>
            <active>true</active>
            <protocol>https</protocol>
            <username>me</username>
            <password>secret</password>
            <host>proxy.server</host>
            <port>8080</port>
        </proxy>
    </proxies>
</settings>

这两个文件都可以独立工作,但我不知道如何将它们组合成一个。

有没有办法配置 maven,如果公司 Nexus 无法解决依赖关系,它将回退并尝试通过公司的互联网代理或其他方式从外部存储库下载,这样我就不必切换两个settings.xml 文件之间?

4

1 回答 1

1

您可以在“正常”中配置代理settings.xml并将您的 Nexus 排除为 nonProxyHost:

https://maven.apache.org/guides/mini/guide-proxies.html

此外,您需要将镜像配置更改为能够直接连接 MavenCentral(和其他存储库)<mirrorOf>*</mirrorOf>的配置。<mirrorOf>*,!central</mirrorOf>

当然,如果管理员可以将外部存储库添加到公司 Nexus,首选的解决方案是与管理员交谈。

于 2020-09-22T13:11:58.420 回答