maven - 如何解决此错误:“XXX 的 POM 无效”?

Ste*_*han 3 java dependencies jmock maven transitive-dependency

我正在使用 Maven 构建一个简单的项目。我无法构建它,因为缺少传递依赖项,即objenesis 1.0.

我在调试模式下运行 Maven 并收到以下消息:

[DEBUG] =======================================================================
[WARNING] The POM for org.jmock:jmock-junit4:jar:2.6.0 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model for org.jmock:jmock-junit4:2.6.0
[ERROR] Invalid packaging for parent POM org.jmock:jmock-parent:2.6.0, must be "pom" but is "jar" @ org.jmock:jmock-parent:2.6.0
...
Run Code Online (Sandbox Code Playgroud)

当我查看 jmock-parent 时,我似乎找不到对 pom 或 jar 类型的引用。

我该如何解决这个问题?

注意:我们使用我们公司的 Nexus 来获取依赖项。


pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Poc</groupId>
<artifactId>Poc</artifactId>
<version>0.0.1-SNAPSHOT</version>

<properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>

<dependencies>
      <dependency>
         <groupId>org.jmock</groupId>
         <artifactId>jmock-junit4</artifactId>
         <version>2.6.0</version>
      </dependency>
</dependencies>
  </project>
Run Code Online (Sandbox Code Playgroud)

jmock-parent-2.6.0.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jmock</groupId>
   <artifactId>jmock-parent</artifactId>
   <version>2.6.0</version>
   <description>POM was created by Sonatype Nexus</description>
</project>
Run Code Online (Sandbox Code Playgroud)

jmc*_*hon 5

听起来依赖项没有正确下载。我会尝试从本地 M2 存储库中删除 org.jmock 目录,并让 Maven 尝试重新下载该 jar。

编辑M2_REPO\org\jmock\jmock-parent\2.6.0\jmock-parent-2.6.0.pom:当您在文本编辑器中查看时,它有具体说明吗<packaging>pom</packaging>?您可能还想确保 Nexus 存储库中的依赖项也正确。我刚刚从 Maven Central 中提取了依赖项,并且没有遇到任何问题。

jmock-parent pom 摘录

编辑2:如果 Nexus 无法从 Maven Central 下载它,它可能会自动为您创建一个父 pom。您的 Nexus 安装是否配置为从 Maven Central 下载依赖项?您是否手动将mvn deploy:deploy-filejmock-junit4.jar 添加到 Nexus 存储库?我确信有一种方法可以强制 Nexus 更新该 pom,或者您可以通过从 mavencentral 下载它然后运行mvn deploy上面列出的命令来手动部署正确的父 pom。