M2E何时以及如何使用Maven测试范围在Eclipse运行配置中包括测试依赖项



我花了一段时间才能进行此观察,但是我看到M2E神奇地管理了classpath。

示例:如果我在" src/java/main"源文件夹中以Java应用程序运行,则不包括"测试"范围。注意:课程能够编译,但无法运行。但是,如果我将同一类移至" SRC/Java/test"文件夹,则可以编译并运行。

如果我 Run as JUnit Test,则始终包含"测试"范围(即使类位于"主"源文件夹中)。

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

我在http://www.eclipse.org/m2e/documentation/m2e-faq.html

上找到了以下内容。

还请注意,classPath用于Junit和Java应用程序启动 启用Maven支持的项目的配置也是 以特殊的方式计算和排除资源不会影响它

当我比较他们的运行配置时,我看不到任何差异,那么我怎么能看到正在执行什么魔术?
是否有一种方法可以通过运行配置或任何其他方式覆盖"正常"行为?

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

这是M2E决定是否应使用测试或运行时伪影范围。

  • "作为Junit测试运行"one_answers"作为testng测试运行"使用测试范围。
  • "作为Java应用程序运行"使用测试范围,如果应用程序MAIN类位于SRC/test/Java下,否则使用运行时范围。

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

最新更新