m2e何时以及如何使用Maven测试范围在Eclipse Run Configurations中包含测试依赖项?

suc*_*awk 5 eclipse m2eclipse maven m2e

我花了一段时间来做这个观察,但我看到m2e"神奇地"管理了类路径.

示例:如果我在"src/java/main"源文件夹中作为Java应用程序运行,则它将排除"test"范围.注意:该类能够编译,但无法运行.但是,如果我将同一个类移动到"src/java/test"文件夹,那么它就能够编译并运行.

如果我Run as JUnit Test那么总是包含"测试"范围(即使该类在"主"源文件夹中).

我发现这些发现的唯一方法是在运行时转储java.class.path系统属性.

我在http://www.eclipse.org/m2e/documentation/m2e-faq.html上找到了以下内容

另请注意,用于启用Maven支持的项目的JUnit和Java Application启动配置的类路径也以特殊方式计算,排除的资源也不会影响它.

当我比较他们的运行配置时,我看不出任何差异,那么我怎样才能看到正在执行的魔术?
有没有办法通过运行配置或任何其他方式覆盖"正常"行为?

exo*_*_cw 3

引用自https://bugs.eclipse.org/bugs/show_bug.cgi?id=410228

以下是 m2e 如何决定 Java 应用程序启动是否应使用测试范围或运行时工件范围。

  • “run as junit test”和“run as testng test”使用测试范围。
  • 如果应用程序主类位于 src/test/java 下,“作为 java 应用程序运行”则使用测试范围,否则使用运行时范围。

这意味着您可以使用主类的位置来控制行为。