【问题标题】:Eclipse + Maven: What is M2E really doing?Eclipse + Maven:M2E 到底在做什么?
【发布时间】:2015-09-23 12:40:23
【问题描述】:

我想知道当我点击 Project > Clean 时,mvn 是否真的参与了构建过程的设置。

M2E(Maven 到 Eclipse,标准插件)是否只是按照 pom 指定的方式读取和分析 pom 设置/更新 Eclipse 项目,还是实际运行 pom 中定义的阶段?

我只是想知道在 Project > Clean 上会发生什么当涉及到 Maven...。

[更新]

由于人们对这个问题感到困惑,这里有更多信息:

我在 Maven 中更改了项目的构建过程,并且它似乎不会被我直接在 IDE 中触发的操作所反映。因此,M2E 接缝更像是 maven 设置的翻译器,并将相同的设置应用于 Eclipse,而不改变行为。这也将解释为什么 M2E 首先提供连接器。

由于我无法验证这一点,我将其归结为一个简单的问题,如果得到回答,我就知道有关 Eclipse 中的 Maven 集成的更困难问题的答案。

[更新2]

M2E 具有执行某些阶段的能力。我添加了一个答案。这个答案并不明显,因为我在问这个问题之前上下搜索了互联网。此外,我只是通过之前对这个问题的答案提出的一些想法找到了答案,这是我所要求的,但只是图片的一半。

这个问题是一个完美的例子,为什么经常在堆栈溢出时,既没有询问也没有暗示明显的问题,也没有最终的答案,并且触发器快乐接近友好的群体有时会错过重点:-)。

【问题讨论】:

  • 您混淆了 Maven 和 Eclipse。两者都是两种截然不同的技术。 Project > Clean 是一个 Eclipse Action,它与 Maven 没有任何关系。
  • 不,我没有混淆。我正在尝试扩展构建过程,并且 mvn clean 或 mvn build 正在产生不同的输出。所以它归结为 M2E 在内部是如何工作的,所以归结为一个简单的问题:当我点击 Project > Clean 时,M2E 实际上在做什么。所以这既不是重复,也不是我混淆的东西。这只是高级 IDE 与 Maven 的对比,我还想不通。
  • @MartinKersten Tunaki 是对的:清理项目时,M2E 插件什么也不做。但它会在调用构建时做一些事情,因为具有 Maven 特性的 Eclipse 项目也附加了一个 Maven 构建器。
  • 好的,所以最终 M2E 保持不变。感谢您的澄清。我认为拥有一个干净的目标 M2E 可能已经发布了这个。

标签: java eclipse maven


【解决方案1】:

当你清理一个 eclipse 项目时,eclipse 会清除项目的输出目录,而不调用 maven。这是一个 Eclipse 操作,对您拥有的所有项目执行,无论这些项目是否已从 maven 导入。

如果您想在导入的 eclipse 项目上运行 maven 目标,您可以使用Run configurations 在项目上显式调用 maven 目标。

【讨论】:

  • 我找到了一个更好的解释真正发生的事情。我发布了我自己的答案,但你的也是有效的。
  • 顺便说一句,感谢您的回答,我真的很感激,它最终让我自己了解了全貌,当我像现在这样搞乱默认构建周期时,这是值得了解的。非常感谢!
【解决方案2】:

M2E 对每个阶段都有自己的映射。根据此映射,Eclipse 操作将被替换、扩展或保持原样。

从下图可以看出clean命令被设置为忽略。您可以通过 Project Properties > Maven > Lifecycle Mapping 查看/更改这些映射。所以这实际上是(如预期的)每阶段映射。通过下载新的连接器,M2E 能够为默认安装不支持的特殊阶段提供额外的映射。

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 2010-12-30
    • 1970-01-01
    • 2014-03-20
    • 2019-06-14
    • 2023-03-15
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多