【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 - 如果值以 macosx 开头
    • freebsd - 如果值以 freebsd 开头
    • openbsd - 如果值以 openbsd 开头
    • netbsd - 如果值以 netbsd 开头
    • sunos - 如果值以 solarissunos 开头
    • windows - 如果值以 windows 开头
    • zos - 如果值以 zos 开头
  • os.detected.arch 被设置为以下值之一,基于 Java 系统属性 os.arch 的小写值,且其中的非字母数字字符被移除。例如:x86_64 -> x8664

    • x86_32 - 如果值是以下之一:x8632x86i386i486i586i686ia32x32
    • x86_64 - 如果值是以下之一:x8664amd64ia32eem64tx64
    • itanium_32 - 如果值是 ia64n
    • itanium_64 - 如果值是以下之一:ia64ia64witanium64
    • sparc_32 - 如果值是以下之一:sparcsparc32
    • sparc_64 - 如果值是以下之一:sparcv9sparc64
    • arm_32 - 如果值是以下之一:armarm32
    • aarch_64 - 如果值是 aarch64
    • mips_32 - 如果值是以下之一:mipsmips32
    • mips_64 - 如果值是 mips64
    • mipsel_32 - 如果值是以下之一:mipselmips32el
    • mipsel_64 - 如果值是 mips64el
    • ppc_32 - 如果值是以下之一:ppcppc32
    • ppc_64 - 如果值是 ppc64
    • ppcle_32 - 如果值是以下之一:ppcleppc32le
    • ppcle_64 - 如果值是 ppc64le
    • s390_32 - 如果值是 s390
    • s390_64 - 如果值是 s390x
    • riscv - 如果值是 riscvriscv32
    • riscv64 - 如果值是 riscv64
    • e2k - 如果值是 e2k
    • loongarch_64 - 如果值是 loongarch64

    注意:此属性的位数部分依赖于 JVM 二进制的位数,例如,如果你在 64 位操作系统上运行 32 位 JVM,你将获得以 _32 结尾的属性。

  • os.detected.bitness:表示 JVM 二进制的位数,例如 6432。对于 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.majoros.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移除元素合并两个有序数组-LeetCode

一、移除元素 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; int removeElement(int* nums, int numsSize, int val) {int src0;int dst0;while(src<numsSize){if(nums[src]val){src;}else if (nums[src]!val){nums[dst]nums[src];src;dst;}}return dst…

渲染引擎之ECS架构介绍

1.什么是ECS&#xff1f; 我们先简单地介绍一下什么是ECS&#xff1a; E -- Entity 实体&#xff0c;本质上是存放组件的容器C -- Component 组件&#xff0c;引擎所需的所有数据结构S -- System 系统&#xff0c;根据组件数据处理逻辑状态的管理器 ECS全称Entity-Component-…

SAPUI5基础知识11 - 组件配置(Component)

1. 背景 组件&#xff08;Component&#xff09;是SAPUI5应用程序中独立且可重用的部件。 SAPUI5提供以下两类组件: faceless组件 (class: sap.ui.core.Component): 无界面组件即没有用户界面相关的元素&#xff0c;用于不需要UI元素编码的场景&#xff1b; UI组件 (class: …

C# 实现基于exe内嵌HTTPS监听服务、从HTTP升级到HTTPS 后端windows服务

由于客户需要把原有HTTP后端服务升级为支持https的服务&#xff0c;因为原有的HTTP服务是一个基于WINDOWS服务内嵌HTTP监听服务实现的&#xff0c;并不支持https, 也不像其他IIS中部署的WebAPI服务那样直接加载HTTPS证书&#xff0c;所以这里需要修改原服务支持https和服务器环…

每日复盘-20240708

今日关注: 20240708 六日涨幅最大: ------1--------300391--------- 长药控股 五日涨幅最大: ------1--------300391--------- 长药控股 四日涨幅最大: ------1--------300391--------- 长药控股 三日涨幅最大: ------1--------300391--------- 长药控股 二日涨幅最大: ------…

JAVA进阶学习11

文章目录 一、方法引用1.1 引用静态方法1.2 引用成员方法1.3 引用构造方法1.4 方法引用的其他调用方式1.4.1 使用类名引用成员方法1.4.2 引用数组的构造方法 1.5 总结二、异常2.1 异常的处理2.1.1 JVM虚拟机处理异常2.1.2 try...catch异常处理 2.2 异常中的常见方法2.3 异常的抛…

Java集合升序降序、转Set的方法

Collections.sort(list,Comparator.comparing(OcApplySquareVo::getApplyName).reversed()); 集合转set /** 集合转set */Set<String> pkCodeSet rows.stream().map(RailwayWeighBookResult.RailwayWeighBook::getPkCode).collect(Collectors.toSet());

互联网接入技术的简单介绍

引言 要连接到互联网&#xff0c;用户必须先连接到某个ISP&#xff08;互联网服务提供商&#xff09;。接入技术解决的就是用户如何连接到本地ISP的问题&#xff0c;通常称之为“最后一公里”。本文将详细介绍几种主要的互联网接入技术&#xff0c;帮助初学者了解不同的接入方…

【SOM神经网络的数据分类】SOM神经网络的数据分类的一个小案例

【SOM神经网络的数据分类】SOM神经网络的数据分类的一个小案例 注&#xff1a;本文仅作为自己的学习记录以备以后复习查阅 一 概述 自组织特征映射网络&#xff08;Self-Organizing Feature Map, SOM&#xff09;也叫做Kohonen网络&#xff0c;它的特点是&#xff1a;全连接、…

Android 列表视频滑动自动播放—滑动过程自动播放(实现思路)

本文基于Exoplayer PlayerView 实现列表视频显示一定比例后自动播放 首先引入google media3包 implementation androidx.media3:media3-exoplayer:1.1.1 implementation androidx.media3:media3-exoplayer-dash:1.1.1 implementation androidx.media3:media3-ui:1.1.1 impl…

【C++深度探索】继承机制详解(二)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…

Redis排行榜

long 整数长度总共有 19位&#xff0c;923XXX…&#xff0c;时间戳 毫秒精度 是 13位&#xff0c;所以只需 14 ~ 19 位存 等级&#xff0c;其他13位存时间。接下来看怎么存。 等级偏移&#xff1a; Math.power(10, 14) 10000000000000000&#xff08;14位&#xff09; 这里有一…

如何把已经上传到gitlab的代码或者文件夹从git上删掉

有小伙伴不小心把缓存文件上传到了git&#xff0c;跑来问我&#xff0c;要怎么把这些文件给删掉&#xff0c;这里一共有两种方式&#xff0c; 先说第一种&#xff0c;通过命令删除&#xff0c;终端进入存在这个缓存文件的目录&#xff0c;执行命令ls&#xff0c;可以看到确实有…

[C++][ProtoBuf][Proto3语法][二]详细讲解

目录 1.Any类型1.说明2.代码&使用 2.oneof类型1.说明2.代码&使用 3.map类型1.说明2.代码&使用 1.Any类型 1.说明 字段还可以声明为Any类型&#xff0c;可以理解为泛型类型 使⽤时可以在Any中存储任意消息类型 父类是Message Any类型的字段也可以⽤repeated来修饰…

从零开始搭建vite开发环境

准备 nodejs 18 pnpm https://vitejs.cn/ 开始 pnpm init pnpm add -D vite新建index.html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…

飞睿智能无线高速uwb安全数据传输模块,低功耗、抗干扰超宽带uwb芯片传输速度技术新突破

在信息化的时代&#xff0c;数据传输的速度和安全性无疑是每个企业和个人都极为关注的话题。随着科技的飞速发展&#xff0c;超宽带&#xff08;Ultra-Wideband&#xff0c;简称UWB&#xff09;技术凭借其性能和广泛的应用前景&#xff0c;逐渐成为了数据传输领域的新星。今天&…

JavaScript学习笔记(七)

45.9 JavaScript 可迭代对象 可迭代对象&#xff08;Iterables&#xff09;是可以使用 for..of 进行迭代的对象。 从技术上讲&#xff0c;可迭代对象必须实现 Symbol.iterator 方法。 45.9.1 遍历字符串 <body><p id"demo"></p><script>c…

使用vllm部署大语言模型

vLLM是一个快速且易于使用的库&#xff0c;用于LLM&#xff08;大型语言模型&#xff09;推理和服务。通过PagedAttention技术&#xff0c;vLLM可以有效地管理注意力键和值内存&#xff0c;降低内存占用和提高计算效率。vLLM能够将多个传入的请求进行连续批处理&#xff0c;从而…

PTrade常见问题系列5

回测失败&#xff1a;可用资源不足。 回测运行失败&#xff0c;错误码&#xff1a;2 错误信息&#xff1a;可用资源不足&#xff0c;请稍后在创建。 1、之前客户未限制客户容器使用内存和CPU&#xff0c;周末修改配置&#xff0c;限制了内存和CPU&#xff1b; 2、此报错是用户…

【Javascript】微信小程序项目结构目录详解

我白天是个 搞笑废物 表演不在乎 夜晚变成 忧伤怪物 撕扯着孤独 我曾经是个 感性动物 小心地感触 现在变成 无关人物 &#x1f3b5; 张碧晨/王赫野《何物》 微信小程序开发工具提供了一个便捷的开发环境&#xff0c;使开发者可以快速构建和部署小程序。在…