Maven 2 如何手动禁用/黑名单Maven存储库

Maven 2 如何手动禁用/黑名单Maven存储库,maven-2,dependencies,repository,Maven 2,Dependencies,Repository,在我的基础项目中,我使用JasperReports的依赖项,它在pom中不存在存储库声明。当我运行每一个Maven commad时,这个Jasper存储库中都有寻找commons集合的依赖项,所以我需要等待超时。 这是我的基础项目,在我的其他项目中用作依赖项,因此我需要再次等待超时。 是否有办法将此存储库移至黑名单或覆盖此设置 注: 1.为什么搜索Jasper存储库,可能是因为范围 <dependency> <groupId>commons-collections

在我的基础项目中,我使用JasperReports的依赖项,它在pom中不存在存储库声明。当我运行每一个Maven commad时,这个Jasper存储库中都有寻找commons集合的依赖项,所以我需要等待超时。
这是我的基础项目,在我的其他项目中用作依赖项,因此我需要再次等待超时。
是否有办法将此存储库移至黑名单或覆盖此设置

注:
1.为什么搜索Jasper存储库,可能是因为范围

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>[2.1,)</version>
    <scope>compile</scope>
</dependency>

公地收藏
公地收藏
[2.1,)
编译
2.我解决这个问题的想法是更改jasper pom并使用代理存储库,但我正在寻找另一种选择。
3.我使用jasperreports 1.3.3版本,我不想更改它

是否有办法将此存储库移至黑名单或覆盖此设置

据我所知,这是不可能的

为什么它要在Jasper存储库中搜索,可能是因为范围

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>[2.1,)</version>
    <scope>compile</scope>
</dependency>
是的,我认为范围对这种行为负有“责任”。如果没有范围,Maven就不必检查远程存储库是否有比本地repo中可用版本更新的版本

我解决这个问题的想法是更改jasper pom并使用代理存储库,但我正在寻找另一种选择

修复jasper pom并使用代理存储库当然是理想的解决方案,但这并不总是可能的。不过,可能有一个解决办法。您是否尝试排除jasperreports具有范围的可传递依赖项,并在pom中自己提供它们(具有固定版本)。类似这样的情况:

<dependencies>
  <dependency>
    <groupId>jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>1.3.3</version>
    <!-- Remove Transitive dependencies drawn by Jasper Report that we don't want -->
    <exclusions>
      <exclusion>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
      </exclusion>
      ...
    </exclusions>
  </dependency>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>2.1</version><!-- Or whatever version, as long as it's fixed -->
    <scope>compile</scope>
  </dependency>
  ....
<dependencies>

jasperreports
jasperreports
1.3.3
公地收藏
公地收藏
...
公地收藏
公地收藏
2.1
编译
....
这样,Maven就不必检查不存在的存储库,也不必等待超时。我想试试

我使用jasperreports 1.3.3版本,我不想更改它


没问题。

您可以通过在settings.xml中使用mirrorOf声明来覆盖回购协议。尽管这不是它通常的用途,但在jasper reports repoid上设置一个mirrorOf并将其指向Central(repo1.maven.org)将有效地使其消失


更好的选择是使用类似的存储库管理器,然后您可以控制实际提供的代理和工件。

以下内容不会告诉maven忽略特定的存储库:

    <repository>
        <id>repo1.maven</id>
        <url>http://repo1.maven.org</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

repo1.maven
http://repo1.maven.org
假的
假的

@Pascal。谢谢它的帮助。Maven中的范围是邪恶的:)@cetnar很高兴它是有用的。我同意,范围不好,它们带来的问题比解决方案多。Fred下面关于它可以被禁用的回答似乎是正确的,我刚刚使用了它。也许是一个新功能?上述方法是将处于某种过渡状态的Maven repo列入黑名单的好方法pendency的pom.xml,并且正在引发问题(比如从java.net获得的可怕的301重定向),Maven central中已经存在组件。这件事发生在我身上-一个依赖项引用了一个技术预览存储库,现在被GA存储库所取代。用这个来阻止它,世界上一切都很好,但这是一个很难追踪的问题!这对我不起作用。我仍然可以从是repo。ID必须与声明POM中使用的ID匹配,因此我在此阻止从mvmsearch下载此查找
:http://www.mvnsearch.org/maven2/commons-logging/commons-logging/maven-metadata.xml
覆盖的存储库ID必须是
mvmsearch
。我通过添加到settings.xml禁用了java.net(/conf/settings.xml或~/.m2/settings.xml)
…disabled-jave.nethttps://jcenter.bintray.com/             http://download.java.net/maven/2