【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.mfbz.cn/a/783793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows 11 + kali wsl二合一配置步骤与踩坑

windows 11 kali wsl二合一配置步骤与踩坑 在前几天的某市攻防演练中&#xff0c;在攻防前期&#xff0c;我的虚拟机经常无缘无故出现断网、卡顿等现象&#xff0c;但找不出原因。 为了不影响后续的这些天的攻防演练&#xff0c;我选择在一个晚上通宵 在我的windows 11系统上…

2.作业2

目录 1.作业题目 A图 B代码 2.css盒子模型 0.css盒子模型 1.外边距&#xff08;margin&#xff09; 2.边框&#xff08;border&#xff09; 3.内边距&#xff08;padding&#xff09; ​编辑 3.GET方法与POST方法的区别 学习产出&#xff1a; html的作业 1.作业题目 A图…

无向图中寻找指定路径:深度优先遍历算法

刷题记录 1. 节点依赖 背景: 类似于无向图中, 寻找从 起始节点 --> 目标节点 的 线路. 需求: 现在需要从 起始节点 A, 找到所有到 终点 H 的所有路径 A – B &#xff1a; 路径由一个对象构成 public class NodeAssociation {private String leftNodeName;private Stri…

文华财经盘立方期货通鳄鱼指标公式均线交易策略源码

文华财经盘立方期货通鳄鱼指标公式均线交易策略源码&#xff1a; 新建主图幅图类型指标都可以&#xff01; VAR1:(HL)/2; 唇:REF(SMA(VAR1,5,1),3),COLORGREEN; 齿:REF(SMA(VAR1,8,1),5),COLORRED; 颚:REF(SMA(VAR1,13,1),8),COLORBLUE;

离线查询+线段树,CF522D - Closest Equals

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 522D - Closest Equals 二、解题报告 1、思路分析 考虑查询区间已经给出&#xff0c;我们可以离线查询 对于这类区间离线查询的问题我们通常可以通过左端点排序&#xff0c;然后遍历询问同时维护左区间信息…

数据泄露态势(2024年5月)

监控说明&#xff1a;以下数据由零零信安0.zone安全开源情报系统提供&#xff0c;该系统监控范围包括约10万个明网、深网、暗网、匿名社交社群威胁源。在进行抽样事件分析时&#xff0c;涉及到我国的数据不会选取任何政府、安全与公共事务的事件进行分析。如遇到影响较大的伪造…

《金山 WPS AI 2.0:重塑办公未来的智能引擎》

AITOP100平台获悉&#xff0c;在 2024 世界人工智能大会这一科技盛宴上&#xff0c;金山办公以其前瞻性的视野和创新的技术&#xff0c;正式发布了 WPS AI 2.0&#xff0c;犹如一颗璀璨的星辰&#xff0c;照亮了智能办公的新征程&#xff0c;同时首次公开的金山政务办公模型 1.…

支持图片识别语音输入的LobeChat保姆级本地部署流程

文章目录 前言1. LobeChat对我们有哪些帮助?2. 本地安装LobeChat3. 如何使用LobeChat工具4. 安装Cpolar内网穿透5. 实现公网访问LobeChat6. 固定LobeChat公网地址 前言 本文主要介绍如何在Windows系统电脑本地部署LobeChat&#xff0c;一款高颜值的开源AI大模型智能应用&…

5-google::protobuf命名空间下常用的C++ API----message.h

#include <google/protobuf/message.h> namespace google::protobuf 假设您有一个消息定义为: message Foo {optional string text 1;repeated int32 numbers 2; } 然后&#xff0c;如果你使用 protocol编译器从上面的定义生成一个类&#xff0c;你可以这样使用它: …

Studying-代码随想录训练营day31| 56.合并区间、738.单调递增的数字、968.监控二叉树、贪心算法总结

第31天&#xff0c;贪心最后一节(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 56.合并区间 738.单调递增的数字 968.监控二叉树 贪心算法总结 56.合并区间 文档讲解&#xff1a;代码随想录合并区间 视频讲解&#xff1a;手撕合并区间 题目&#xf…

C语言下结构体、共用体、枚举类型的讲解

主要内容 结构体结构体数组结构体指针包含结构体的结构链表链表相关操作共用体枚举类型 结构体 结构体的类型的概念 结构体实现步骤 结构体变量的声明 struct struct 结构体名{ 数据类型 成员名1; 数据类型 成员名2; ..…

绝地求生PUBG兰博基尼怎么兑换 兰博基尼怎么获得

绝地求生采用虚幻4引擎制作&#xff0c;玩家们会在一个偏远的岛屿上出生&#xff0c;然后展开一场赢家通吃的生存竞赛&#xff0c;最后只会有1个人存活。当然&#xff0c;和其他生存游戏一样&#xff0c;玩家需要在广袤复杂的地图中收集武器、车辆、物资&#xff0c;而且也会有…

解决win10报“无法加载文件……profile.ps1,因为在此系统上禁止运行脚本”的问题

打开命令行报错 解决方法 使用管理员权限打开PowerShell&#xff1a;WinX, 选择“Windows PowerShell&#xff08;管理员&#xff09;” 输入&#xff1a;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 输入&#xff1a;y确认修改安全策略 &#xff1a;y确认修改安全策略…

探讨大数据在视频汇聚平台LntonCVS国标GB28181协议中的应用

随着摄像头和视频监控系统的普及和数字化程度的提高&#xff0c;视频监控系统产生的数据量急剧增加。大数据技术因其优秀的数据管理、分析和利用能力&#xff0c;成为提升视频监控系统效能和价值的重要工具。 大数据技术可以将视频监控数据与其他数据源进行融合分析&#xff0c…

【elasticsearch】IK分词器添加自定义词库,然后更新现有的索引

进入elasticsearch中的plugins位置&#xff0c;找到ik分词器插件&#xff0c;进入ik插件的config文件夹&#xff0c;当中有一个IKAnalyzer.cfg.xml配置文件。使用vim编辑器修改配置文件&#xff1a; vim IKAnalyzer.cfg.xml 配置文件如下&#xff08;添加了自定义字典的位置&…

pygame 音乐粒子特效

代码 import pygame import numpy as np import pymunk from pymunk import Vec2d import random import librosa import pydub# 初始化pygame pygame.init()# 创建屏幕 screen pygame.display.set_mode((1920*2-10, 1080*2-10)) clock pygame.time.Clock()# 加载音乐文件 a…

人工智能的新时代:从模型到应用的转变

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

信息技术课堂上如何有效防止学生玩游戏?

防止学生在信息技术课堂上玩游戏需要综合运用教育策略和技术手段。以下是一些有效的措施&#xff0c;可以用来阻止或减少学生在课堂上玩游戏的行为&#xff1a; 1. 明确课堂规则 在课程开始之初&#xff0c;向学生清楚地说明课堂纪律&#xff0c;强调不得在上课时间玩游戏。 制…

使用tcpdump抓取本本机的所有icmp包

1、抓取本机所有icmp包 tcpdump -i any icmp -vv 图中上半部分&#xff0c;是源主机tmp179无法ping通目标主机192.168.10.79&#xff08;因为把该主机关机了&#xff09;的状态&#xff0c;注意看&#xff0c;其中有unreachable 图中下半部分&#xff0c;是源主机tmp179可以p…