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

问题描述

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

作为一种解决方法我有两个手动切换的settings.xml文件一个settings.xml使用公司Nexus服务器作为内部jar,而另一个使用company代理从认的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>

用于互联网的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排除为nonProxyHost:

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

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

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