一、什么是os-maven-plugin
 
os-maven-plugin 是一个 Maven 扩展/插件,它根据 ${os.name} 和 ${os.arch} 生成各种有用的、与平台相关的项目属性,并将这些属性标准化。${os.name} 和 ${os.arch} 在不同的 JVM 和操作系统版本之间往往存在细微的差异,或者它们有时包含对机器不友好的字符,如空格。此插件试图消除这种碎片化,以便您可以可靠地确定当前的操作系统和架构。
插件生成的属性包括:
-  os.detected.name被设置为以下值之一,基于 Java 系统属性os.name的小写值,且其中的非字母数字字符被移除。例如:OS_400->os400- aix- 如果值以- aix开头
- hpux- 如果值以- hpux开头
- os400- 如果值以- os400开头,且其后的字符不是数字(例如- os4000不符合条件)
- linux- 如果值以- linux开头
- osx- 如果值以- mac或- osx开头
- freebsd- 如果值以- freebsd开头
- openbsd- 如果值以- openbsd开头
- netbsd- 如果值以- netbsd开头
- sunos- 如果值以- solaris或- sunos开头
- windows- 如果值以- windows开头
- zos- 如果值以- zos开头
 
-  os.detected.arch被设置为以下值之一,基于 Java 系统属性os.arch的小写值,且其中的非字母数字字符被移除。例如:x86_64->x8664- x86_32- 如果值是以下之一:- x8632、- x86、- i386、- i486、- i586、- i686、- ia32、- x32
- x86_64- 如果值是以下之一:- x8664、- amd64、- ia32e、- em64t、- x64
- itanium_32- 如果值是- ia64n
- itanium_64- 如果值是以下之一:- ia64、- ia64w、- itanium64
- sparc_32- 如果值是以下之一:- sparc、- sparc32
- sparc_64- 如果值是以下之一:- sparcv9、- sparc64
- arm_32- 如果值是以下之一:- arm、- arm32
- aarch_64- 如果值是- aarch64
- mips_32- 如果值是以下之一:- mips、- mips32
- mips_64- 如果值是- mips64
- mipsel_32- 如果值是以下之一:- mipsel、- mips32el
- mipsel_64- 如果值是- mips64el
- ppc_32- 如果值是以下之一:- ppc、- ppc32
- ppc_64- 如果值是- ppc64
- ppcle_32- 如果值是以下之一:- ppcle、- ppc32le
- ppcle_64- 如果值是- ppc64le
- s390_32- 如果值是- s390
- s390_64- 如果值是- s390x
- riscv- 如果值是- riscv或- riscv32
- riscv64- 如果值是- riscv64
- e2k- 如果值是- e2k
- loongarch_64- 如果值是- loongarch64
 注意:此属性的位数部分依赖于 JVM 二进制的位数,例如,如果你在 64 位操作系统上运行 32 位 JVM,你将获得以 _32结尾的属性。
-  os.detected.bitness:表示 JVM 二进制的位数,例如64、32。对于 zOS 遗留系统,可能会报告为31。
-  os.detected.version.*:os.detected.version及其子属性是依赖于操作系统的版本号,可能表示内核或操作系统的发行版本。它们是从 Java 系统属性os.version中生成的。os-maven-plugin使用以下正则表达式来查找版本号:((\\d+)\\.(\\d+)).*- os.detected.version.major- 第一个匹配的数字序列
- os.detected.version.minor- 第二个匹配的数字序列
- os.detected.version-- <os.detected.version.major>.<os.detected.version.minor>,例如- 3.1
 这样, os-maven-plugin能够从os.version属性中提取出主要的和次要的版本号,并将它们分别存储在os.detected.version.major和os.detected.version.minor中,同时组合这两个版本号形成os.detected.version。
-  os.detected.classifier:是${os.detected.name}-${os.detected.arch}的简写。如:windows-x86_64
-  os.detected.release.*(仅限 Linux):用于特定 Linux 发行版的自定义部署。
要在 Maven 项目中启用 os-maven-plugin,请在 pom.xml 中添加以下扩展:
<project><build><extensions><extension><groupId>kr.motd.maven</groupId><artifactId>os-maven-plugin</artifactId><version>1.7.1</version></extension></extensions></build>
</project>
这样配置后,Maven 项目就可以使用 os-maven-plugin 提供的标准化操作系统和架构属性了。
二、在项目中使用变量
使用${os.detected.classifier}变量
<project><dependencies><dependency><groupId>com.example</groupId><artifactId>my-native-library</artifactId><version>1.0.0</version><classifier>${os.detected.classifier}</classifier></dependency></dependencies>
</project>
参考
- os-maven-plugin