相关疑难解决方法(0)

如何继承多模块Maven项目及其所有好处?

我无法找到一个好的,可扩展的解决方案的问题:

我有一个项目,可以提供给定工件的多种风格.这已被设置为多模块项目,目前有3个模块:

  • / flavour1_module
  • / flavour2_module
  • / flavour3_module

问题是我还有另外50个需要以相同方式设置的项目,即提供3种口味.

解决方案:

  1. 将已创建的多模块项目转换为所有其他50个项目的父项目
    • 缺点:它不起作用.与父模块一起保存的指令不会被继承,因此不会执行它们.
  2. 使用maven-archetype-plugin创建一个多模块项目模板,然后根据模板创建所有50个项目
    • 缺点:如果我需要flavour4,我需要手动更新所有50个项目以添加flavour4_module(并复制其内容).不可扩展.
  3. 将所有flavor的配置嵌入到单个pom中,并根据配置文件启用或禁用它们(即通过配置文件使用组合而不是通过模块继承).然后将50个项目指向它,作为它们的父项.这将创建"内联"模块
    • 缺点:我需要在我自己的机制上实现,这些机制由开箱即用的模块提供.(例如,在单独的目录中构建每个风味).我也会失去模块提供的明确分离.

任何想法如何做得很好?还有其他选择吗?

谢谢,卢卡斯

编辑:

另一个选择是使用reactor扩展maven-reactor-plugin :inject-modules目标,它将从外部工件下载模块定义,并将其定义附加为普通模块.这将动态创建一个新模块.然后所有50个项目都可以使这个pom.xml成为他们的父项.

配置看起来像这样(草稿):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-reactor-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <id>inject</id>
      <phase>initialize</phase>
      <goals>
        <goal>inject-modules</goal>
      </goals>
      <configuration>
        <modules>
          <module>
            <artifactId>flavour1_module</artifactId>
            <groupId>[ groupId ]</groupId>
            <version>[ version ]</version>
          </module>
          <module>
            <artifactId>flavour2_module</artifactId>
            <groupId>[ groupId ]</groupId>
            <version>[ version ]</version>
          </module>
          <module>
            <artifactId>flavour3_module</artifactId>
            <groupId>[ groupId ]</groupId>
            <version>[ version ]</version>
          </module>
        </modules>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这样做会有意义吗?

更新: …

pom.xml maven multi-module

7
推荐指数
1
解决办法
2646
查看次数

标签 统计

maven ×1

multi-module ×1

pom.xml ×1