maven依赖关系报告:避免(glassfish)存储库的延迟和错误消息

时间:2014-12-20 00:35:00

标签: maven repository maven-site-plugin

当我运行Apache Commons VFS2site版本时,依赖项报告插件会尝试填充矩阵,哪个工件可以通过哪个存储库获取。

在我的情况下,它还试图检查maven.glassfish.org存储库,这是AFAIK放弃的。但由于它仍然存在于一些使用过的依赖POM中,它仍然出现在我的项目中(我想我不能轻易地影响它)。

[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.7
[ERROR] Unable to determine if resource asm:asm:jar:3.1:provided exists in http://maven.glassfish.org/content/groups/glassfish
...

这不仅会产生很多错误,还需要时间。此外,我还想将报告中的列限制为与此项目相关的存储库。

我想知道,有没有办法让插件(以及所有Maven)跳过特定的存储库?你会如何将它们列入我的project POM

dependency:list-repositories目标未显示此回购,但当我搜索所有缓存的POM文件时,我在<id>glassfish-repository</id>中看到com.sun.jersey:jersey-server:1.8

1 个答案:

答案 0 :(得分:1)

选择其中一项:

  1. 正确答案是他们从pom定义中删除存储库。 见Why Putting Repositories in your POMs is a Bad Idea。应该没有理由不在那里托管其他开源项目。 要说服其他存储库将其项目发布到Central,请将它们指向文档http://maven.apache.org/guides/mini/guide-central-repository-upload.html,或者您可以为它们执行上载。如果它只是一些可能最简单的工件。
  2. 请记住,pom中定义的每个额外回购都会影响您的构建的性能, 因为Maven必须检查每个 repo的工件。它不是一个大的 问题,如果你只需要添加一个回购...但问题会增长,接下来 你知道你的maven构建的东西是为每个工件检查50个repos 建立时间是一条狗。有关影响的详细信息,请参阅此email thread

    1. 下一个最佳答案,如果该项目被放弃,您可以修补pom以删除存储库定义并将修补后的pom和未更改的jar重新上传到Maven Central。请参阅Guide to uploading artifacts to the Central Repository

    2. 避免使用这些选项

      这里的每个其他选项都是黑客,选择任何这些选项都意味着其他人都需要进行相同的更改来解决问题。

      1. 通过在settings.xml file中禁用存储库来将其列入黑名单。遗憾的是,存储库没有唯一标识符。 存储库&gt; id 字段可以是创建pom的人定义的任何内容,因此可以使用不同的id引用相同的存储库URL。要使用 -X 选项查找id运行,调试输出应列出存储库ID。使用类似的东西来禁用它:
      2. <repository>
          <releases>
            <enabled>false</enabled>
          </releases>
          <id>the repo id from X here</id>
          <name>the repo's name</name>
          <url>the repo's url</url>
        </repository>
        
        1. 强制存储库使用镜像。很像3,但要将破损的存储库重定向到另一个存储库。
        2. <mirror>
            <id>Another Mirror</id>
            <url>url to mirror</url>
            <mirrorOf>id of broken repo</mirrorOf>
          </mirror>
          
          1. 强制存储库改为使用本地Maven Repository Manager(甚至在您的笔记本电脑上)。这就是没有人滥用pom中的存储库, Maven只会联系您当地的MRM,并为每个定义的仓库避免多个慢速网络连接。
          2. <mirror>
              <id>Local MRM</id>
              <url>url to MRM</url>
              <!-- Mirror EVERYTHING to your MRM -->
              <mirrorOf>*</mirrorOf>
            </mirror>