使用互斥值列表激活Maven配置文件

使用互斥值列表激活Maven配置文件,maven,dependencies,platform-specific,Maven,Dependencies,Platform Specific,我正在做一个依赖SWT的项目。它使用Maven作为构建工具和依赖关系管理系统。因为SWT依赖于平台,所以我需要告诉Maven应该在哪个平台上使用哪个依赖项 Maven配置文件通常用于根据os.family和os.arch属性有条件地包含依赖项,如下所示: <profiles> <profile> <id>Linux-x86</id> <activation> <os> <

我正在做一个依赖SWT的项目。它使用Maven作为构建工具和依赖关系管理系统。因为SWT依赖于平台,所以我需要告诉Maven应该在哪个平台上使用哪个依赖项

Maven配置文件通常用于根据os.familyos.arch属性有条件地包含依赖项,如下所示:

<profiles>
  <profile>
    <id>Linux-x86</id>
    <activation>
      <os>
        <family>linux</family>
        <arch>i386</arch>
      </os>
    </activation>
    <dependencies>
      <dependency>
        <!-- some platform-specific dependency goes here -->
      </dependency>
    </dependencies>
  </profile>
</profiles>

Linux-x86
linux
i386
问题是,os.arch可能有几个不同的值——“i386”、“i486”、“i586”等。但是,在SWT世界中,它们都映射到“x86”


有没有可能在Maven中指定一个互斥的值列表(在我的情况下是os.arch)作为条件,而不需要为每个值创建单独的配置文件?

没有对其进行测试,但有一个arch
x86

见maven文档


我的测试机器(Ubuntu 16.04)在Maven 3.3.9中返回Arch:“i386”。该项目不使用x86编译,但它使用i386.hm。好的,另一种方法。。。如何定义一个必需的系统属性,这可能是一个析取…是的,设置一个系统属性确实是一个解决方案,我想进一步研究。我在某个地方看到,os.arch将有条件地重新定义为“x86”,这是一个丑陋的IMHO。在我的Gradle脚本中,我通常使用一个简单的数组重新映射,它只需要两行Groovy代码。目前,我不知道如何在Maven中以简洁优雅的方式完成……据我所知,您可以构建一个包含不同平台/架构等的产品,并且在适当的平台上启动该产品将自动选择正确的工件?OSGi?你有关于它在实践中如何工作的更多细节吗?有什么例子吗?提前谢谢!