我知道 Nexus 应该下载外部依赖项,但公司 Nexus 服务器(我无法控制)无法访问互联网或下载外部 jar。
作为解决方法,我有 2 个 settings.xml 文件,我手动切换它们。一个 settings.xml 使用公司 Nexus 服务器作为内部 jar,另一个使用公司代理从默认 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无法解决依赖关系,它会回退并尝试通过公司的互联网代理或其他方式从外部存储库下载,这样我就不会必须在两个 settings.xml 文件之间切换吗?
最佳答案
您可以在“正常”settings.xml
中配置代理并将您的 Nexus 排除为非ProxyHost:
https://maven.apache.org/guides/mini/guide-proxies.html
此外,还需要更改镜像配置<mirrorOf>*</mirrorOf>
类似 <mirrorOf>*,!central</mirrorOf>
能够直接连接 MavenCentral(以及其他存储库)。
当然,首选解决方案是与管理员联系,看他们是否可以将外部存储库添加到公司 Nexus。
关于maven - 如何让 Maven 从 Nexus 下载但绕过它获取外部 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64008230/