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>
如您所见,这些依赖项的 groupId
是 com.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 是该项目的父级。如果是这样,您需要它来构建。
有没有办法指示 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>
如您所见,这些依赖项的 groupId
是 com.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 是该项目的父级。如果是这样,您需要它来构建。