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

cet*_*nar 21 dependencies maven-2 repository

在我的基础项目中,我使用了JasperReports的依赖项,它的pom中存在不存在的存储库声明.当我运行每个Maven commad时,依赖于在这个Jasper存储库中查找commons-collection,所以我需要等待超时.
这是我的基础项目,在我的其他项目中用作依赖项,所以我需要等待超时.
有没有办法将此存储库移至黑名单或覆盖此设置?

注意:1.
为什么在Jasper存储库中搜索,可能会因为范围而受到影响

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>[2.1,)</version>
    <scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我解决这个问题的想法是改变jasper pom并使用代理存储库,但我期待另一种选择.
3.我使用jasperreports 1.3.3版本,我想不要改变它.

Fre*_*lam 16

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

    <repository>
        <id>repo1.maven</id>
        <url>http://repo1.maven.org</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
Run Code Online (Sandbox Code Playgroud)


Bri*_*Fox 12

您可以使用settings.xml中的mirrorOf声明覆盖repo.虽然这不是它通常的意图,例如在jasper报告中设置mirrorOf报告并将其指向Central(repo1.maven.org)会有效地使其消失.

更好的选择是使用像Nexus这样的存储库管理器,然后您可以控制实际提供的代理和工件.


Pas*_*ent 8

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

据我所知,这是不可能的.

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

是的,我认为范围对此行为"负责".如果没有范围,Maven就不必检查远程存储库以获得比本地存储库中可用版本更新的版本.

我解决这个问题的想法是改变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>
Run Code Online (Sandbox Code Playgroud)

这样,Maven就不必检查不存在的存储库,这应该避免等待超时.我试一试.

我使用jasperreports 1.3.3版本,我想不要改变它.

没问题.