如何在pom.xml中定义2组配置文件?

How to define 2 sets of profiles in pom.xml?

我的 pom.xml 中需要一个二维配置文件组织。

该项目是关于一个具有不同风格的胖客户端应用程序。每种风格都有一组略有不同的依赖项、内部化文件、启动画面…… 这是配置文件的一个维度。

我还为不同的 os 构建应用程序:windows、linux、mac。 这是配置文件的第二个维度。有些东西必须根据目标进行更改(例如,对于 windows,我构建了一个 ZIP 文件,而对于 linux 和 mac,我构建了一个 TAR.GZ 文件)

我解决这个问题的方法是使用 pom.xml 配置文件作为风格,并使用 .m2/settings.xml 配置文件作为 os 目标。 它有效,但不是很好。因为 .m2/settings.xml 应该仅限于特定于用户的配置,而不包含“构建逻辑”。

我想将我放入 .m2/settings.xml 的“构建逻辑”“转移”到 pom.xml 中。 但我不想让 1 个配置文件级别具有 (#Flavours x #Os) 个配置文件(例如 flavor1-os1、flavour1-os2、...)

这可以实现吗?有没有办法在 pom.xml 中实现这两个级别的配置文件?

为每种口味声明一个配置文件:

    <profile>
      <id>flav1</id>
      ...
    </profile>
    <profile>
      <id>flav2</id>
      ...
    </profile>
    <profile>
      <id>flav3</id>
      ...
    </profile>

每个 OS:

    <profile>
      <id>win</id>
      ...
    </profile>
    <profile>
      <id>linux</id>
      ...
    </profile>
    <profile>
      <id>mac</id>
      ...
    </profile>

Activate them 分别通过例如:

mvn -P flav1, linux ...