Maven构建生产空Jar

时间:2011-07-14 23:31:30

标签: maven-2 maven

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

我做了archtype:生成目标。这在/ bin中创建了my-app项目结构。然后,当我试图运行mvn包时,它说

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

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

现在mvn包工作了。

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

此外,mvn应该仅在/ bin内工作。至少就是我的情况。但是我看到了几个插图,其中mnv命令是从here

等随机目录执行的

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

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  1. 安装Maven后,应立即将其添加到操作系统的路径中。这是一个操作系统练习,与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. 在您掌握基础知识之前,甚至不用担心多模块项目。不,真的,直到你有更多的基础知识下来。只是不要担心它。
  6. 如果有什么不清楚,请问。

答案 2 :(得分:0)

maven希望源文件出现在某个位置。如果你的设置搞砸了,我认为它是,那么你需要使用element明确地提供它的位置的引用。

然而,即使一切都是正确的,它也曾经发生过一次。在Mac上工作但在Linux上生成了空jar。添加元素明确修复它。