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

Posted

技术标签:

【中文标题】如何在 pom.xml 中定义 2 组配置文件?【英文标题】:How to define 2 sets of profiles in pom.xml? 【发布时间】:2022-01-05 21:58:11 【问题描述】:

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

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

我还为不同的操作系统构建应用程序: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 中实现这 2 个级别的配置文件?

【问题讨论】:

操作系统之间的区别是什么?你有写资源和依赖吗?所以在你的构建中使用不同的 deps 制作不同的模块...... 【参考方案1】:

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

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

每个操作系统一个:

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

Activate them 单独通过例如:

mvn -P flav1, linux ... 

【讨论】:

以上是关于如何在 pom.xml 中定义 2 组配置文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在pom.xml文件中修改build节点

pom.xml

setting.xml配置文件 --转载

5Maven-构建配置文件

maven 03-pom.xml核心配置

如何在 Spring Boot 中获取 log4j2.properties 文件以从 pom.xml 读取文件名