Maven 相关的 Java 构建错误:缺少 pom.xml

Posted

技术标签:

【中文标题】Maven 相关的 Java 构建错误:缺少 pom.xml【英文标题】:Maven-related Java build error: pom.xml is missing 【发布时间】:2017-06-28 04:30:26 【问题描述】:

我刚开始在 NetBeans 中使用 Maven。我试图弄清楚为什么在构建项目(Java Web 应用程序)时会收到以下错误消息:

POM 用于 unknown.binary:hibernate-jpamodelgen-4.3.1.Final:jar:SNAPSHOT 是 缺失,没有可用的依赖信息

在下面的屏幕打印中,您可以看到错误消息,但您也可以看到此依赖项实际上存在于 pom.xml 中,并且相关的 .jar 文件实际上存在于 Dependencies 文件夹中(所有相关部分在丝印中用细红线标出,您可以点击图片放大):

编辑:在屏幕打印中,我将 Dependencies 文件夹中的错误 .jar 文件标记为红色,它应该是我错误标记的紧挨着下面的那个。

所以我想知道我在这里错过了什么......

编辑:在屏幕打印中,我将 Dependencies 文件夹中的错误 .jar 文件标记为红色,它应该是我错误标记的紧挨着下面的那个。

【问题讨论】:

【参考方案1】:

那个依赖看起来不对

你是在项目中编译那个jar吗?

改成:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-jpamodelgen</artifactId>
  <version>5.2.6.Final</version>
  <scope>provided</scope>
</dependency>

或者您想使用的任何版本(即在您的容器中运行的版本,例如 tomcat)

【讨论】:

【参考方案2】:

为了运行,您需要所有 jar 文件。许多依赖项也需要关联的 jar 文件。考虑目标“依赖:树”。它显示了您项目的所有依赖项,包括您声明为依赖项的那些。 (我稍后再谈)

当您包含依赖项时,maven 需要知道该依赖项是否具有依赖项,以便它也可以拉入这些 jar。 Maven 出去并拉入罐子,将它们存储在您的 $M2_HOME 目录中。它还包括一个关联的 pom。您可以在 maven 的存储库 https://mvnrepository.com/ 上找到它。 该页面还将向您展示如何在您的 pom.xml 中声明您的依赖项。 非常好的网站。

转到您的主目录并查找“.m2”\repository。然后使用您的 jar 名称向下遍历并执行 dir 命令。它将显示 jar 和相关的 pom。它的(jar 文件)依赖项需要该 pom。

当你做一个dependency:tree 目标时,它会搜索所有的pom,包括那些在$M2_HOME 目录中的pom,并显示一个显示所有依赖的树。 你的缺少 pom

我刚刚去了 maven 的网站并输入了您的工件名称。这是它说要使用的 pom 依赖项。

  <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-jpamodelgen -->
      <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-jpamodelgen</artifactId>
      <version>5.2.6.Final</version>
  </dependency>

【讨论】:

谢谢!是的,我接受了 D-Unit 的回答,但你得到了支持。你的回答让我学到了很多我不知道的事情。

以上是关于Maven 相关的 Java 构建错误:缺少 pom.xml的主要内容,如果未能解决你的问题,请参考以下文章

什么是Maven

由于缺少 tools.jar,Maven AspectJ 插件无法使用 Java 9 构建

由于 pom.xml 中的错误,无法使用 Maven 运行构建

maven构建报不属于自己提交代码的错误

java.lang.ClassNotFoundException: hudson.remoting.Launcher

带有 Maven 的 JaCoCo - 缺少执行数据文件