一、什么是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