如何让 Maven 从 Nexus 下载但绕过外部 jar

How to let Maven download from Nexus but bypass it for external jars

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

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

settings.xml 用于 Nexus(不包括代理)

<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>

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 无法解决依赖关系,它会回退并尝试通过公司的 Internet 代理或其他方式从外部存储库下载,以便我不必在两个 settings.xml 文件之间切换?

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

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

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

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