动态地将Mojo生成的代码添加到源路径中

4

我编写了一个mojo,可以生成代码并将其放置在{root}/target/generated-sources/foo下。当我执行以下命令:

mvn clean install

我得到了一些错误提示,表明生成的源文件没有被包含在构建路径中(生成的文件在那里,但在编译阶段没有被获取)。我从这个答案中了解到,我需要动态添加{root}/target/generated-sources/foo作为POM的源目录。问题在于,我无法找到有关如何执行此操作的任何信息。
作为备选计划,我打算使用Build Helper Maven插件,但是如果可能的话,我希望在我的mojo中自动完成这项任务。
1个回答

2
我更喜欢将这个添加到我的Mojo中:
/**
  * The current project representation.
  * @parameter expression="${project}"
  * @required
  * @readonly
  */
 private MavenProject project;

/**
 * Directory wherein generated source will be put; main, test, site, ... will be added implictly.
 * @parameter expression="${outputDir}" default-value="${project.build.directory}/src-generated"
 * @required
 */
private File outputDir;

显然,您可以更改default-value以匹配自己的模式。
然后在execute()方法中:
if (!settings.isInteractiveMode()) {
    LOG.info("Adding " + outputDir.getAbsolutePath() + " to compile source root");
}
project.addCompileSourceRoot(outputDir.getAbsolutePath());

谢谢。我已经有了第一部分(即输出位置属性)。我正在尝试让第二部分工作 - 添加编译源根。对于我来说,“project”未定义。正在研究它,看看它是否是Maven版本问题或其他问题。但如果您有任何想法,请告诉我。 - Kent Boogaart
@KentBoogaart 添加了MavenProperty属性,该属性将自动被捕获并准备好使用。 - maba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接