【问题标题】:How do you configure maven to ignore repositories specified in POM files?如何配置 maven 以忽略 POM 文件中指定的存储库?
【发布时间】:2013-12-28 12:32:16
【问题描述】:

我在公司内部网上有一个项目(阅读 - 没有外部互联网访问)。我有一个运行 Artifactory 的服务器,其中包含所有必需的 Maven 工件。我有一个将 maven 指向正在运行的 Artifactory 服务器的 settings.xml 文件。一切都很愉快,maven 可以下载依赖项,直到在 POM 文件中指定存储库的工件(在我的情况下为 org/eclipse/jetty/jetty-project/7.5.4.v20111024/jetty-project-7.5.4.v20111024.pom) .然后 maven 尝试从 POM 文件中指定的 repo 加载剩余的依赖项,而不是从 Artifactory 加载。这会破坏构建。如何配置 maven 以忽略 POM 文件中指定的存储库?

谢谢,

内森

【问题讨论】:

    标签: maven


    【解决方案1】:

    作为一种解决方法,在您的settings.xml 中定义另一个具有相同ID 的存储库(是oss.sonatype.org,在jetty-parent:19 中定义,这就是问题吗?)并将其指向您的存储库。 Maven 将使用该定义来支持 pom 中的定义。

    针对 Maven (MNG-3056) 提出了一个未解决的问题,允许对其进行配置,以便仅使用您的存储库;一般来说,如果你有一个本地存储库,那将是你想要的行为。

    【讨论】:

      【解决方案2】:

      这是一个很好的答案乔。谢谢你。我找了很久。

      我只是举一个例子,我和内森有同样的问题。

      我使用 Maven 企业存储库(Nexus 或 Artifactory)并且我在代理之后,这意味着我无法直接(也不想)从除我自己以外的任何其他存储库下载。
      Jasper 报告 net.sf.jasperreports:jasperreports:6.2.0 在其 pom 中定义了几个存储库。

      <groupId>net.sf.jasperreports</groupId>
      <artifactId>jasperreports</artifactId>
      <version>6.2.0</version>
      ...
      <repositories>
          <repository>
              <id>jasperreports</id>
              <url>http://jasperreports.sourceforge.net/maven2</url>
          </repository>
          <repository>
              <id>jaspersoft-third-party</id>
              <url>http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/</url>
          </repository>
      </repositories>
      

      这会导致以下异常:

      C:\my-project>mvn verify
      [INFO] Scanning for projects...
      
      [INFO] Building my-project 1.0.0-SNAPSHOT
      [INFO] 
      Downloading: http://mynexus/nexus/content/groups/ch-public/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
      Downloading: http://jasperreports.sourceforge.net/maven2/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
      Downloading: http://jaspersoft.artifactoryonline.com/jaspersoft/third-party-ce-artifacts/com/lowagie/itext/2.1.7.js4/itext-2.1.7.js4.pom
      [INFO] BUILD FAILURE
      [INFO] Could not resolve dependencies for project ... :
      Failed to collect dependencies at net.sf.jasperreports:jasperreports:jar:6.2.0 -> 
      com.lowagie:itext:jar:2.1.7.js4: Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js4: 
      Could not transfer artifact com.lowagie:itext:pom:2.1.7.js4 
      from/to jasperreports (http://jasperreports.sourceforge.net/maven2): 
      Connect to jasperreports.sourceforge.net:80 [jasperreports.sourceforge.net/216.34.181.96] 
      failed: Connection timed out: 
      

      Joe 描述的解决方案是: 在全局 settings.xml (C:/maven-installation/conf/settings.xml) 或私有 settings.xml (~/.m2/settings.xml) 中添加以下配置文件:

      <profiles>
          <profile>
              <id>ignore-repositories</id>
              <activation>
                  <activeByDefault>false</activeByDefault>
              </activation>
              <repositories>
                  <repository>
                      <id>jasperreports</id>
                      <url>http://mynexus/nexus/content/groups/ch-public/
                      </url>
                      <releases>
                          <enabled>true</enabled>
                      </releases>
                      <snapshots>
                          <enabled>false</enabled>
                      </snapshots>
                  </repository>
                  <repository>
                      <id>jaspersoft-third-party</id>
                      <url>http://mynexus/nexus/content/groups/ch-public/
                      </url>
                      <releases>
                          <enabled>true</enabled>
                      </releases>
                      <snapshots>
                          <enabled>false</enabled>
                      </snapshots>
                  </repository>
              </repositories>
          </profile>
      </profiles>
      

      重要提示: 配置文件(jasperreports、jaspersoft-third-party)中的存储库 id 与 pom.xml 中使用的存储库的 id 完全匹配 - 在本例中为 net 的 pom.xml。 sf.jasperreports:jasperreports:6.2.0

      不要忘记将“外部”存储库添加到 Maven 企业存储库的“代理”列表中

      【讨论】:

        猜你喜欢
        • 2016-02-26
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        • 2011-11-06
        • 2017-10-31
        • 2016-06-27
        • 2013-11-01
        • 2016-03-02
        相关资源
        最近更新 更多