插件如何添加自己生成的资源?

时间:2015-10-16 08:56:39

标签: maven maven-plugin

这个问题适用于maven: How to add resources which are generated after compilation phase中提出的完全相同的解决方案,但我正在寻找另一种解决方案。

在我的插件中,我成功地在target/generated-resources/some目录中生成了一些资源文件。

现在我希望这些资源文件包含在托管项目的最后一个jar中。

我试过了。

final Resource resource = new Resource();
resource.setDirectory("target/generated-resources/some");
project.getBuild().getResources().add(resource);

其中project的定义如下。

@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;

它不起作用。

1 个答案:

答案 0 :(得分:1)

在编译阶段之后,不再调用Maven资源插件。因此,在这样的后期阶段为构建添加更多资源仅具有美容效果,例如, Eclipse之类的IDE将generated-resources文件夹识别为源文件夹并相应地标记它。

您必须手动将插件中的结果复制到构建输出文件夹:

import org.codehaus.plexus.util.FileUtils;

// Finally, copy all the generated resources over to the build output folder because
// we run after the "process-resources" phase and Maven no longer handles the copying
// itself in later phases.
try {
    FileUtils.copyDirectoryStructure(
            new File("target/generated-resources/some"),
            new File(project.getBuild().getOutputDirectory()));
}
catch (IOException e) {
    throw new MojoExecutionException("Unable to copy generated resources to build output folder", e);
}