我创作了一个生成代码的mojo,并将其粘贴在 {root} / target / generated-sources / foo 之下。当我执行:
mvn clean install
我收到错误,表明生成的源未包含在构建路径中(生成的文件在那里,但在编译阶段没有被选中)。我从this answer了解到我需要动态添加 {root} / target / generated-sources / foo 作为POM的源目录。问题是,我还没有能够找到有关如何执行此操作的任何信息。
作为备份计划,我打算使用Build Helper Maven插件,但我希望尽可能在我的mojo中自动执行此操作。
答案 0 :(得分: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());