Maven 如何忽略工件描述符?

Maven how to ignore artifact descriptor?

有没有办法指示 Maven 不为某些依赖项寻找工件描述符? 我正在努力解决这个问题:

[ERROR] Failed to execute goal on project zws-consumer: Could not resolve dependencies for project com.etech.zws:zws-consumer:jar:2.9.28.RC1-SNAPSHOT: Failed to collect dependencies at com.ptv:xlocate-cxf-client:jar:1.20.1.3: Failed to read artifact descriptor for com.ptv:xlocate-cxf-client:jar:1.20.1.3: Could not find artifact com.ptvag.xserver.build:xserver-parent:pom:1.20.1.0 in artifactory-etech-releases (https://artifactory.etech.delivery/artifactory/etech/releases/) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project zws-consumer: Could not resolve dependencies for project com.etech.zws:zws-consumer:jar:2.9.28.RC1-SNAPSHOT: Failed to collect dependencies at com.ptv:xlocate-cxf-client:jar:1.20.1.3
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:269)
...

所以问题似乎很清楚:

Could not find artifact com.ptvag.xserver.build:xserver-parent:pom:1.20.1.0 in artifactory-etech-releases (https://artifactory.etech.delivery/artifactory/etech/releases/)

问题是当我查看存储库时 https://artifactory.etech.delivery/artifactory/etech/releases/ 没有任何具有此名称的依赖项 com.ptvag.xserver.build:xserver-parent 但所有其他依赖项都在那里。

因为它只是关于工件描述,有没有办法告诉 maven 忽略它。具有该描述的所有依赖项都在我的 .m2 中,但命令 mvn clean install 由于此错误而失败。

构建在 2 天前通过,但我正在尝试将项目从 jdk8 迁移到 11,并且从 1 天开始我就面临这个问题。

相关依赖项是:

    <dependency>
        <groupId>com.ptv</groupId>
        <artifactId>xlocate-cxf-client</artifactId>
        <version>1.20.1.3</version>
    </dependency>
    <dependency>
        <groupId>com.ptv</groupId>
        <artifactId>xroute-cxf-client</artifactId>
        <version>1.20.1.3</version>
    </dependency>
    <dependency>
        <groupId>com.ptv</groupId>
        <artifactId>xtour-cxf-client</artifactId>
        <version>1.20.1.3</version>
    </dependency>

如您所见,这些依赖项的 groupIdcom.ptv,但异常是关于 com.ptvag。我有点困惑,因为在存储库中没有 com.ptvag groupId。

编辑

经过一些搜索,我找到了那个依赖项在哪里,请看下面:

现在我不明白为什么maven会尝试下载它。

感谢您的帮助。

您可以像这样排除依赖关系:

    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>com.etech.zws</groupId>
          <artifactId>zws-consumer</artifactId>
          <exclusions>
            <exclusion>
              <groupId>com.ptvag.xserver.build</groupId>
              <artifactId>xserver-parent</artifactId>
            </exclusion>
          </exclusions> 
        </dependency>
      </dependencies>
    </project>

但是如果 Maven 试图解决依赖关系,那么 build/project 的某些部分很可能需要它。

你应该以某种方式得到 com.ptvag.xserver.build:xserver-parent:pom:1.20.1.0。如果它不在你的存储库中,你可以使用 mvn install 手动安装它,如果你有 pom.xml

您可能缺少其中一个依赖项的父 pom。没有这个父 pom,就不可能构建所有传递依赖项的树(父 pom 可能包含依赖项或 dependencyManagement 条目)。所以构建不起作用。

工件 com.ptv:xlocate-cxf-client:jar:1.20.1.3 是您项目的(传递)依赖项。看看那里,如果所描述的 POM 是该项目的父级。如果是这样,您需要它来构建。