【SpringBoot3】使用os-maven-plugin为项目自动添加常用的变量
一、什么是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 - .,例如 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 中添加以下扩展:
kr.motd.maven os-maven-plugin 1.7.1这样配置后,Maven 项目就可以使用 os-maven-plugin 提供的标准化操作系统和架构属性了。
二、在项目中使用变量
使用${os.detected.classifier}变量
com.example my-native-library 1.0.0 ${os.detected.classifier}参考
- os-maven-plugin
