【问题标题】:Maven build producing empty JarMaven 构建产生空 Jar
【发布时间】:2011-10-05 18:46:45
【问题描述】:

我是 maven 新手,我正在尝试做 maven in 5 mins 我一直在试图弄清楚为什么 mvn package 会产生一个空罐子。我完全按照说明进行操作,但它不起作用。

我完成了 archtype:generate 目标。这在 /bin 中创建了 my-app 项目结构。然后当我尝试运行 mvn package 时,它​​说

[INFO] 无法执行 mojo:资源。它需要一个具有现有 po 的项目 m.xml,但构建没有使用一个。

我尝试了几个建议,最后尝试将 my-app 项目中的 pom.xml 文件直接放在 /bin 中的上一级。

现在 mvn 包可以工作了。

在与 my-app 相同的目录中创建了一个目标。但是 jar 是空的...没有任何类文件并试图执行它会抛出 classnotfoundexception。

此外,mvn 应该只能在 /bin 中工作。至少我就是这样。但是我看到了几个插图,它们的 mnv 命令是从随机目录执行的,例如 here

还有如何在maven上创建多模块项目?

有什么建议吗?

【问题讨论】:

  • 1.您有一些源文件(java 类?2. 您的源文件夹是否标记为源文件夹?3. 请您发布您的 pom。4. 您使用的是 IDE 还是在控制台上使用 Maven?

标签: maven-2 maven


【解决方案1】:

我认为您尝试在 Maven 的 bin 目录中运行 Maven。您应该切换到生成的my-app 目录并在那里运行它。 Maven 需要相对于 pom.xml 非常具体的项目结构。当您复制 pom.xml 时,您的 java 文件和资源留在了 my-app 中,因此 Maven 没有找到任何内容并生成了空 jar。

【讨论】:

    【解决方案2】:
    1. 在安装 Maven 之后,您应该立即将其添加到操作系统的 PATH 中。这是一个操作系统练习,与 maven 无关,但如果您让我们知道您在使用什么,我们一定可以帮助您。
    2. 执行 #1 后,您将能够从任何地方运行 maven。这就是将它添加到 PATH 的作用。但是,只有在包含名为 pom.xml 的文件的目录中运行构建时,您才能运行构建(尽管也有命令行参数可让您更改此设置)。
    3. 当您从原型生成项目时(使用mvn archetype:generate),它会为您创建一个项目目录并在其中放置一个 pom.xml 和一些文件夹和文件。阅读#2 后,您应该意识到这意味着紧接在mvn archetype:generate 之后,您需要cd <project dir>然后你已经准备好构建你的 maven 项目了。
    4. 当你在你的项目目录中时(记住,那是 pom.xml 所在的位置),mvn package 将构建一个 JAR(或 WAR、EAR、bundle 等等),mvn clean 将删除所有构建工件,只留下源代码。
    5. 在掌握基础知识之前,不要担心多模块项目。不,真的,直到你拥有比基础知识更多的东西。别担心。

    如果有什么不清楚的,尽管问。

    【讨论】:

    • 非常感谢瑞恩。我已经准备好了。也可以配置多模块prj。
    【解决方案3】:

    maven 期望源文件存在于某个位置。如果您的设置搞砸了(我认为是这样),那么您将需要使用元素显式提供对其位置的引用。

    但是,即使一切都正确,也碰巧有过一次。在 Mac 上工作,但在 Linux 上生成空 jar。添加元素显式修复它。

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 2013-03-01
      • 2013-09-07
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多