如何禁用maven阻止外部HTTP repositores?
Maven自3.8.1版起默认阻止外部HTTP存储库(请参阅)如何禁用maven阻止外部HTTP repositores?,maven,maven-3,Maven,Maven 3,Maven自3.8.1版起默认阻止外部HTTP存储库(请参阅) 有没有一种方法可以禁用该规则或免除存储库遵守此规则?我通过检查Maven git存储库中负责默认HTTP阻塞的提交,找到了一种解决方案: 我的解决方案如下: 在Maven设置中(位于${Maven.home}/conf/settings.xml或${user.home}/.m2/settings.xml),必须删除以下条目: <mirror> <id>maven-default-http-blocker&
有没有一种方法可以禁用该规则或免除存储库遵守此规则?我通过检查Maven git存储库中负责默认HTTP阻塞的提交,找到了一种解决方案: 我的解决方案如下: 在Maven设置中(位于
${Maven.home}/conf/settings.xml
或${user.home}/.m2/settings.xml
),必须删除以下条目:
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
在
标记中,您需要指定被阻止的存储库,并在
标记中再次指定存储库的原始url。您需要为所有被阻止的存储库创建此取消阻止镜像
示例:
如果在pom.xml
中定义了以下HTTP存储库:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://my-url/libs-release</url>
</repository>
<repository>
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://my-url/libs-snapshot</url>
</repository>
</repositories>
<mirrors>
<mirror>
<id>release-http-unblocker</id>
<mirrorOf>central</mirrorOf>
<name></name>
<url>http://my-url/libs-release</url>
<blocked>false</blocked>
</mirror>
<mirror>
<id>snapshot-http-unblocker</id>
<mirrorOf>snapshots</mirrorOf>
<name></name>
<url>http://my-url/libs-snapshot</url>
<blocked>false</blocked>
</mirror>
</mirrors>
我希望我的工作能帮助其他偶然发现这一点的人。但是,如果您有更优雅或更好的解决方案,请与我们分享 另一种可能的解决方案/解决方法是通过注释掉maven's'main'
settings.xml
文件的
部分中的maven default http blocker
镜像来覆盖新的默认http阻塞行为(在我的例子中,在/opt/maven/conf
下)
另外,解除对所有不安全的http存储库的阻止是否是一个好主意完全是另外一回事。您应该在http存储库中添加一个镜像,允许在maven设置中使用http。您不应该消除所有存储库的默认maven行为。然后告诉您的devops团队使用https 在
.m2/settings.xml
中:
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://my-url/libs-release</url>
</repository>
<repository>
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://my-url/libs-snapshot</url>
</repository>
</repositories>
<mirrors>
<mirror>
<id>release-http-unblocker</id>
<mirrorOf>central</mirrorOf>
<name></name>
<url>http://my-url/libs-release</url>
<blocked>false</blocked>
</mirror>
<mirror>
<id>snapshot-http-unblocker</id>
<mirrorOf>snapshots</mirrorOf>
<name></name>
<url>http://my-url/libs-snapshot</url>
<blocked>false</blocked>
</mirror>
</mirrors>
我的回购镜像
我的回购HTTP镜像
http://url-to.my/repo
我的回购协议
假的
您是否处于公司环境中?如果是这样,请配置一个*
并重定向到您的内部存储库管理器?@khmarbaise我找到了一个解决方案(请参阅我的答案),其中我为每个被阻止的存储库显式配置了一个镜像。在您的解决方案中,使用一个通配符作为mirrorOf
,我无法区分存储库,例如,每个快照和版本都有一个存储库。或者我可以?你可以。请参阅(settings.xml文件)…mirrorOf帮助我防止在发现新的repo时更改某些内容。。。维修所有请求都被重定向到repository manager,它已经阻止了所有内容…而且我永远不会在.mvn
中放置settings.xml
,最好使用配置文件提供程序插件(Jenkins)来处理这些内容,包括凭据。。。。永远不要允许在pom文件中定义回购…@khmarbaise我明白你的意思。我同意,这将是一个更好的配置。然而,我的情况不同,我需要利用我所拥有的。我有20个项目,在每个pom文件中定义了存储库。由于maven更新到了3.8.1,所有的构建都失败了,因为repositores是HTTP,而不是HTTPS。我使用JFrog Artifactory作为回购管理器有一个简单的方法:使用Maven 3.6.3.;-)这是我期待的工作。“是否有可能通过通配符解除所有被阻止的回购?”Antoniopetrica在我的测试中,它不起作用。