Maven如何忽略工件描述符?

时间:2019-02-21 15:16:02

标签: java maven dependencies maven-3 build-dependencies

是否有一种方法可以指示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。

编辑

经过一些搜索后,我发现该依赖性在哪里,请查看以下内容: enter image description here

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以像这样排除依赖项:

    <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试图解决依赖关系,那么构建/项目的某些部分最有可能需要它。

您应该以某种方式获得com.ptvag.xserver.build:xserver-parent:pom:1.20.1.0。如果它不在您的存储库中,那么如果您有pom.xml

,则可以使用mvn install手动安装它。

答案 1 :(得分:0)

您可能缺少一个依赖项的父pom。没有此父pom,就不可能构建所有传递依赖项的树(父pom可能包含依赖项或dependencyManagement条目)。因此构建无法正常工作。

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