【问题标题】:Running Maven goals in a reactor project without doing "mvn install"在反应堆项目中运行 Maven 目标而不执行“mvn install”
【发布时间】:2013-05-15 04:44:56
【问题描述】:

我正在尝试在 maven reactor 项目的子项目中执行 Java 文件。这类似于问题Maven exec:java goal on a multi-module project,但除非我执行mvn install,否则 exec 插件无法找到我要在子项目中运行的类。

也许我误解了mvn install 的预期工作流程,但每次我进行更改时都必须执行 mvn install 确实使工作流程复杂化。

当我从 Eclipse 执行文件时,Eclipse 会正确设置类路径(即module1/target/classesmodule2/target/classes),我想从命令行模拟这种行为。我以为mvn -pl exec:java -Dexec.mainClass=...会这样设置类路径,但在这种情况下找不到类。

【问题讨论】:

  • 给审稿人,你能解释一下为什么这个问题太本地化了吗?我认为它只是比我引用的问题稍微具体一些,并且看不到其中的逻辑

标签: java maven


【解决方案1】:

在这种情况下,类路径不是问题。但是你必须编译你的类(例如至少运行 mvn compile)。 如果您在 Eclipse 中运行您的应用程序,Eclipse 将完成编译工作,您必须在命令行上显式调用该命令。

【讨论】:

  • 我应该提到我已经进行了 maven 编译,并且存在目标/类文件夹。我跑了mvn -pl module1 -am exec:java -X -Dexec.mainClass=com.MyClass。输出表明它试图将我的父 pom 放在类路径中:[DEBUG] Adding to classpath : file:/home/.../project/target/classes 但不是子项目。
  • 我认为 exec:java 目标要求所有依赖项都安装在本地 repo 中,因此在 exec:java 目标之前运行 compile 是不够的。但是,我现在也很好奇它在 m2e 的情况下实际上是如何工作的,如果它真的像你说的那样 - 它在 Eclipse 中运行良好......
  • m2e 设置了一个 Eclipse 项目,但 Eclipse 并没有真正使用 Maven 命令行来运行,它只是运行java -cp module1/target/classes:module2/target/classes.... com.MyClass。我可以编写一个脚本来执行此操作,但这不是可重复的或干净的。
猜你喜欢
  • 2012-11-17
  • 2019-06-17
  • 2013-12-24
  • 2019-04-24
  • 2016-11-24
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多