Maven:在项目之间共享资源

时间:2017-09-09 18:33:23

标签: java maven

我有两个项目是共同父项目的子项目。还有一个发电机项目和相应的发电机maven插件项目。此外,两个子项目都使用相同的输入文件,用于代码生成:

parent: pom
  child1: jar
    src/main/generator/input.gen
  child2: jar
    src/main/generator/input.gen
  generator: jar
  generator-plugin: maven-plugin

生成器插件是一个内部制作的Maven插件:

@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
public class GeneratorPlugin extends AbstractMojo {
    @Parameter(required = true, readonly = true, defaultValue = "${project}")
    private MavenProject project;
    @Parameter(required = true, defaultValue = "${project.basedir}/src/main/generator/input.gen")
    private File         input;

   ...

}

Currenlty,此input.gensrc/main/generator/input.genchild1的{​​{1}}中重复。这是个问题。我想只有child2的一个版本。

我应该如何构建我的项目?如何在input.gen中为两个子项目的pom中的<configuration><input>...</input></configuration>插件引用此共享副本?

2 个答案:

答案 0 :(得分:4)

Maven Remote Resources Plugin可能是您正在寻找的内容。

这是example

答案 1 :(得分:0)

我的观点是(未经测试):

  • input.gen放入src/main/resources
  • 中的共享依赖项
  • 修改生成器以接受类路径资源作为输入而不是文件
  • 使用input.gen作为provided范围添加共享相关性,以防止其以最终产品结束