【问题标题】:Maven Plugin: accessing resources accross multiple modulesMaven 插件:跨多个模块访问资源
【发布时间】:2016-08-29 09:17:37
【问题描述】:

我目前正在编写一个自定义 maven 插件,用于在多模块 maven 项目中生成 XML 文件。

我的 maven 结构非常标准:一个父项目和一个模块在父项目文件夹中的项目组件:

-- Parent
  -- module A
  -- module B
  -- module C

我需要按模块列出一组由自定义注释标记的类。 我已经编写了一组自定义注解和一个注解处理器,用于在编译时在相应的模块输出目录(${project.build.outputDirectory})中创建一个 XML 文件。

现在我需要将每个模块 XML 合并到一个文件中,但我不知道如何从我的 maven 插件中访问每个模块,除非将每个路径设置为参数(我不喜欢这种方法)。

关于如何做到这一点的任何想法? maven插件可以遍历项目模块吗?

提前谢谢你。

【问题讨论】:

  • 在同一个父模块下引入一个新模块,并将所有其他模块添加为依赖项以确保构建顺序,然后在该新模块中,您可以通过指定相对位置来访问所有这些资源,例如。 ./module a/target/xmla.xml ,如果您不喜欢使用该解决方案,您可以将这些 xml 公开为每个模块的工件,并且这个新模块可以将该工件称为依赖项。

标签: java maven maven-mojo


【解决方案1】:

要获取您可以使用的所有项目的列表列表:

List<MavenProject> projectList = MavenSession.getProjectDependencyGraph().getSortedProjects()

如果您的目标之一得到正确执行,您将获得所需的一切。每个 MavenProject 都包含一个 getBaseDir() 等。

【讨论】:

    【解决方案2】:

    经过一些研究,似乎 MavenProject.getCollectedProjects() 将返回由多模块项目中的目标执行操作的项目列表。

    【讨论】:

    • 事实上收集的项目只返回子模块中的项目,如果它们被标记为依赖项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多