如何在Maven中组织源生成?

Mia*_*ach 4 java maven-plugin maven

我有一个Maven插件,它为我的java项目生成源代码并将它们放入' target/generated-sources '文件夹中.我需要在编译时使用这些源代码.我想在修改它的时候将它们放在我的项目中,已经生成了.当然,我想把它们放在' src '文件夹下的正确文件夹中,而不是' target/generated-sources '.我如何使用Maven组织这个?

换句话说,我希望能够:

  1. 通过运行我的特殊源生成插件的一些目标来生成我需要的源代码(已经完成,源代码包含我指定的包)

  2. 将这些生成的源移动到标准Maven布局的' src/main/java/... '文件夹中.

  3. 从' target/generated-sources '文件夹中删除它们,因为否则mvn clean install命令会引发错误,说明我有"重复的类".实际上,如果我只是将生成的源从目标复制到src - 我必须使用相同名称和包的类,尽管其中一个位于目标文件夹中.

哪个Maven插件可以用这个?我想这是一个典型的任务.

Mar*_*szS 5

maven中的标准解决方案是生成所有源target/generated-sources代码,来自target/generated-sources和来自的所有源代码都src被编译target/classes并合并到目标jar中.

插件永远不应该触摸目录下的src文件,因为这些文件由版本控制系统管理(例如git).

如果插件写的不好和源文件从target/generated-sources不会自动compilled进入target,然后用目标build-helper:add-source建立帮助Maven插件为@詹姆斯Kingsbery说.

maven-com4j-plugin源代码中有评论:

/**
   * Directory in which to create the Java COM wrapper files. This directory
   * will be added to the Maven project's compile source directory list and
   * will therfore be auto-compiled when the Maven compile phase is run.
   * 
   * @parameter expression="${outputDirectory}"
   *            default-value="${project.build.directory}/generated-sources/com4j/java"
   */
Run Code Online (Sandbox Code Playgroud)

您问题的更重要的部分和解决方案是:

该目录将被添加到Maven项目的编译源目录列表中,并且在Maven编译阶段运行时将自动编译

因此,生成的源代码应该自动编译并存档到构建的jar中.