我写了一个生成源代码的maven插件,基本上运行得很好。
问题是,Eclipse无法识别我生成代码的目录作为附加源文件夹。因此,我会收到大量错误信息,显示XXX不能解析为类型
。但是,从命令行运行 maven 编译和安装没有问题。
起初,我通过使用org.codehaus.mojo.build-helper-maven-plugin
来解决这个问题。这个方法很好用。然而,我不喜欢我的插件用户需要添加第二个插件。因此,我查看了build-helper-maven-plugin
中add-source
目标的源代码并决定直接将相关代码加入到我的插件中。因此,我的插件看起来像这样:
@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
public class MyMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
@Parameter(required = true)
private File targetDirectory;
// some more members
@Override
public void execute() throws MojoExecutionException {
// generation of the sources into targetDirectory
project.addCompileSourceRoot(targetDirectory.getAbsolutePath());
}
}
执行过程中没有错误,无论是从命令行还是从eclipse(使用Alt+F5或右键单击-> Maven->更新项目)。 但是,附加的源目录未被识别。
我做错了什么吗?还是我需要特殊的m2e连接器?目前,我正在使用“生命周期映射插件”绕过此m2e连接器。您可以在此处找到更多信息。
<action>
<execute>
<runOnConfiguration>true</runOnConfiguration>
<runOnIncremental>true</runOnIncremental>
</execute>
</action>