m2e:使用exec-maven-plugin生成代码

我已经使用m2eclipse大约 2年左右,现在已经切换到m2e 。

不幸的是,这已经破坏了我的一些function。

在许多项目中,我生成了Java代码,通常是通过库项目中的主类生成的。 这是一个典型的设置:

 org.codehaus.mojo exec-maven-plugin   generateDTOs generate-sources  java   test com.somecompany.SomeCodeGenerator  ${project.build.directory}/generated-sources/foo ${project.basedir}/path/to/a/config/file more arguments       org.codehaus.mojo build-helper-maven-plugin   addDtoSourceFolder  add-source  process-sources   ${project.build.directory}/generated-sources/foo      

以前,我只需要用eclipse作为maven项目导入该项目,代码将自动执行,源文件夹将添加到eclipse项目中。

现在,m2e已经为buildhelper插件安装了一个“连接器”,因此创建了源文件夹,但我必须通过执行Run As > Maven > generate-sources手动触发代码生成。 这真的很烦人,我希望maven构建能够响应pom.xml的更改, Project > Clean ... ,SVN Updates,Eclipse启动等,就像以前一样。

我能做些什么让m2e像m2eclipse一样工作?

您必须告诉M2E,可以将您的代码生成器作为Eclipse构建的一部分运行:

   [...]     org.eclipse.m2e lifecycle-mapping 1.0.0      org.codehaus.mojo exec-maven-plugin [,)  java               

笔记:

  1. 将此配置放在pluginManagement部分中非常重要,而不是直接在插件下。
  2. 这将导致M2E执行POM中指定的所有 Java执行,作为每个Eclipse构建的一部分。 这意味着如果它们很慢,它们会经常运行并且会造成很大的麻烦。 我不确定如何让M2E运行其中一些并跳过其他人。 您可能不得不将不需要的执行放在配置文件中。

在Eclipse中,您可以定义在导入期间将运行哪个生命周期步骤,默认为空。 您只需将其更改为process-resources或简单地进行Maven – > Update Project Configuration。 在配置(Windows – > Preferences – > Maven)中,您可以更改默认行为以简化实时操作。