1 回答
TA贡献1840条经验 获得超5个赞
这是对 Maven 工作方式的常见误解。
Maven 的核心定义了一个构建生命周期,本质上是一个状态机,告诉它如何转换到给定的阶段。例如,如果您运行:
mvn test-compile
Maven 知道它首先需要通过一系列步骤(状态)才能执行test-compile
。考虑到 POM 的编写方式,这些状态中的每一个都可能有也可能没有附加的插件,Maven 将执行该插件。所以本质上,Maven 本身不做任何资源复制、编译、测试、打包等。所有这些任务都委托给插件。
当您将 Maven 项目导入 Eclipse 时,由于各种原因,它会提供自己的插件映射。其中一些(如编译)对于 IDE 来说是有意义的,它将使用自己的插件来完成这项工作。不属于 Eclipse 通常执行的部分的其他阶段(例如打包)将没有映射,因此没有要执行的插件。
运行 JUnit 测试并不是 Eclipse 通常作为构建的一部分所做的,所以这就是您手动运行 JUnit 测试的原因(右键单击测试类> 运行方式 > JUnit 测试)。Eclipse 只是忽略该surefire
插件,因为它使用自己的内部 JUnit 运行器来运行测试,因此它不会从surefire
插件中获取配置。
我毫不怀疑这可以在 Eclipse 中工作,但在撰写本文时,它根本没有。你有没有尝试过 IntelliJ?
但是,由于有人可能会争辩说 Eclipse 始终处于“DEV”模式,那么合适的解决方法是在 Eclipse 中的 JRE 上静态设置系统属性吗?
像这样:
Window > Preferences > Java > Installed JREs >选择你的 JRE > Edit... > Default VM arguments: -DDEV
添加回答
举报