是否有一种方法可以在模块之间共享Maven插件的通用配置(使用配置文件等)?

时间:2019-02-01 15:58:05

标签: maven

我有一个多模块Maven项目,该项目输出2个不同版本的RPM。除了一些文件外,它们非常相似,并且de.dentrassi.maven RPM插件的配置看起来完全相同。

我正在查看是否有任何方法可以将配置放入.conf文件或其他内容中并使用它,因此我不必每次都要进行更改时都在两个模块中都编辑配置

我当前正在尝试导入配置,但是看不到任何可行的选项/

2 个答案:

答案 0 :(得分:1)

您的多模块项目可能有一个共同的父pom。

您可以在其中定义插件(具有所有配置)-如果该插件不会“损害”其他模块,那么这才有意义。

或者,您可以在父pom的<pluginManagement>部分中定义插件的配置。然后,您只需要在相关模块中定义(而不配置)插件即可。

答案 1 :(得分:1)

最简单的方法是定义一个配置块中所有执行通用的配置,如下所示:

<project..>
  <modelVersion>4.0.0</modelVersion>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>..</groupId>
          <artifactId>..</artifactId>
          <version>1.0</version>
          <configuration>
            .. Global Configuration which is common for everything
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

因此,应在/可以在多模块构建的父pom文件中完成上述操作。现在,在从父级继承的模块中,您可以像这样配置它:

<project..>
  <modelVersion>4.0.0</modelVersion>

  <build>
    <plugins>
      <plugin>
        <groupId>..</groupId>
        <artifactId>..</artifactId>
        <executions>
          <execution>
            <id>special-exec1</id>
            <goals>..</goals
            <phase>..</phase>
            <configuration>
             ... supplemental configuration which is not part of the parent
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>

因此,这将通过pluginManagement在父级中定义通用配置,并且每个专业化都可以在子级中完成。

如果您想覆盖配置或对其进行增强,可以按照以下步骤进行操作:

<project..>
  <modelVersion>4.0.0</modelVersion>

  <build>
    <plugins>
      <plugin>
        <groupId>..</groupId>
        <artifactId>..</artifactId>
        <executions>
          <execution>
            <id>special-exec1</id>
            <goals>..</goals
            <phase>..</phase>
            <configuration>
              <items combine.children="append">
                 <!-- combine.children="merge" is the default -->
                <item>child-1</item>
              </items>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

</project>

可以在POM documentation搜索combine.children中阅读所有详细信息。如果还需要查看前面提到的文档,也可以防止从父级继承配置。