Java 直接获取 pom.xml 配置的属性值

Java 直接获取 pom.xml 配置的属性值

  • 1.需求描述
  • 2.代码示例
  • 3.结果演示

系统:Win10
JDK:1.8.0_351
IDEA:2022.3.3

1.需求描述

在开发一个 SpringBoot 项目的时候,需要从 pom.xml 中获取配置的 artifactId,name,version,description 等属性信息,网上查询一番,发现大多数解决方案是通过在 yml 中配置一个自定属性,用 @project.version@ 来获取 pom 中的值,但是这样会多一层配置,比较麻烦,经过一番学习和测试,我发现通过 maven-model 依赖组件可以直接实现在 java 中获取 pom 中的属性值

2.代码示例

pom.xml 配置如下,里面有需要获取的属性值,以及等会需要使用的 maven-model 依赖包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version></parent><groupId>com.lijinjiang</groupId><artifactId>SpringBootDemo</artifactId><version>1.0.1</version><name>SpringBoot测试项目</name><description>SpringBootDemo测试项目,用来测试获取pom文件属性值</description><properties><project.name>DemoName01</project.name><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.18</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--配置用于获取pom属性值--><dependency><groupId>org.apache.maven</groupId><artifactId>maven-model</artifactId><version>3.1.1</version></dependency></dependencies>
</project>

测试代码如下

import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;
import java.io.FileReader;
import java.io.IOException;@SpringBootTest
class DemoApplicationTests {@Testvoid contextLoads() {MavenXpp3Reader reader = new MavenXpp3Reader();String myPom = System.getProperty("user.dir") + File.separator + "pom.xml";try {Model model = reader.read(new FileReader(myPom));if (model != null) {String artifactId = model.getArtifactId();String version = model.getVersion();String name = model.getName();String description = model.getDescription();System.out.println("artifactId = " + artifactId);System.out.println("version = " + version);System.out.println("name = " + name);System.out.println("description = " + description);}} catch (IOException | XmlPullParserException e) {e.printStackTrace();}}
}

3.结果演示

运行上面的测试代码之后,可以在控制台发现需要的属性值已经正确输出了
在这里插入图片描述

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

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

相关文章

vscode配置ssh远程连接服务器

注意&#xff1a;重启软件或重启电脑&#xff0c;解决很多问题 一. vscode配置ssh vscode通过ssh连接服务器&#xff08;吐血总结&#xff09;_vscode ssh-CSDN博客 二. VScode无法远程连接主机问题 VSCode远程连接服务器报错&#xff1a;Could not establish connection to…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

力扣 中等 143.重排链表

文章目录 题目介绍题解 题目介绍 题解 class Solution {public void reorderList(ListNode head) {ListNode mid middleNode(head);ListNode head2 reverseList(mid);while (head2.next ! null) {ListNode nxt head.next;ListNode nxt2 head2.next;head.next head2;head2.…

Linux-正则表达式

正则表达式 定义DRE模式-纯文本/特殊字符 定义DRE模式-锚字符/点号字符 定义DRE模式-字符组/排除型字符组 定义DRE模式-区间 定义DRE模式-特殊字符组 定义DRE模式-星号 扩展正则表达式-问号 扩展正则表达式-加号 扩展正则表达式-使用花括号 扩展正则表达式-管道符号/表达式分组…

如何通过CDN优化网站服务器访问速度?

CDN&#xff0c;即内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;在现代互联网中起着重要作用。它可以显著提升网站服务器的访问速度。以下是CDN在加速网站访问方面的主要优势及其工作原理。 1. 全球分布的服务器节点 CDN通过在全球范围内布设多个…

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理&#xff0c;这篇不可不读&#xff01; - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…

成都睿明智科技有限公司电商服务可靠不?

在这个短视频风起云涌的时代&#xff0c;抖音不仅成为了人们娱乐消遣的首选平台&#xff0c;更是众多商家竞相追逐的电商新蓝海。成都睿明智科技有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;正以其独到的洞察力和专业的服务&#xff0c;助力无数品牌在这片沃…

微信小程序:miniprogram-ci自动打包工具使用介绍以及支持配置环境变量、jekins打包、taro、uni-app三方工具

微信小程序&#xff1a;miniprogram-ci自动打包工具使用介绍以及支持配置环境变量、jekins打包、taro、uni-app三方工具 背景介绍 一直都是本地电脑运行微信开发者工具打包上传。多项目中新老版本对node版本要求不一致&#xff0c;老是切来切去。而且同一个人开发上传需要打包…

pandas-使用技巧

pandas-使用技巧 简单技巧 仅个人笔记使用&#xff0c;感谢点赞关注 简单技巧 pd.to_dict()&#xff1a;Dataframe格式数据转字典数据pd.dropna()&#xff1a;去nan值& | ~&#xff1a;pd逻辑运算符pd.isnan()&#xff1a;判断是否为nan值pd.concat&#xff1a;多个pd拼接…

李宏毅机器学习2022-HW7-BERT-Question Answering

文章目录 TaskBaselineMediumStrongBoss Code Link Task HW7的任务是通过BERT完成Question Answering。 数据预处理流程梳理 数据解压后包含3个json文件&#xff1a;hw7_train.json, hw7_dev.json, hw7_test.json。 DRCD: 台達閱讀理解資料集 Delta Reading Comprehension …

openpnp - 底部相机视觉识别CvPipeLine的参数bug修正

文章目录 openpnp - 底部相机视觉识别的CvPipeLine的参数bug概述笔记openpnp的视觉识别参数的错误原因备注END openpnp - 底部相机视觉识别的CvPipeLine的参数bug 概述 底部相机抓起一个SOD323的元件&#xff0c;进行视觉识别。 识别出的矩形错了&#xff0c;是一个很长的长方…

Qt_软件添加版本信息

文章内容: 给生成的软件添加软件的版权等信息 #include <windows.h> //中文的话增加下面这一行 #pragma code_page(65001)VS_VERSION_INFO VERSIONINFO

TEI text-embeddings-inference文本嵌入模型推理框架

参看: https://github.com/huggingface/text-embeddings-inference#docker 文本嵌入模型榜单 https://huggingface.co/spaces/mteb/leaderboard bge模型下载 https://huggingface.co/BAAI/bge-m3/tree/main export HF_ENDPOINT=https://hf-mirror.comhuggingface-cli dow…

STM32-HAL库 - MAX30102心率血氧传感器 —— 2024.10.15

一、教程简介 本教程使用CubeMX配合Keil5编写代码&#xff0c;带你10分钟拿下MAX30102。在官方例程的基础上进行移植和封装&#xff0c;测量数据准确。采用模拟I2C&#xff0c;任意三个引脚均可驱动。 二、MAX30102简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器…

Tortoise SVN 安装汉化教程(乌龟SVN)

1.首先下载 去官网下载 如果下载比较慢的&#xff0c;链接自取 https://pan.quark.cn/s/cb6f2eee3f90 2. 安装Tortoise SVN 无脑next到完成 最后到桌面右键 你就发现svn出来了&#xff0c;但是是英文的&#xff01;&#xff01;&#xff01;&#xff01; 像我这种英文不好的…

流体力学笔记

目录 1、名词2、湍流与涡流3 涡激振动4 压力面与吸力面参考&#xff1a;[空气动力学的“他山之石”](https://zhuanlan.zhihu.com/p/412542513) 1、名词 转列&#xff1a;transition 涡脱落&#xff1a;vortex shedding 涡分离&#xff1a;vortex rupture 气动噪声&#xff1a…

【java Web如何开发?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

rel,npt时间服务器

服务器端配置 配置文件/etc/chrony.conf 开放端口 查看123端口是否开放 关闭防火墙 客户端配置 配置文件/etc/chrony.conf 重启文件和查看是否成功 注意事项要在ping通下实现&#xff0c;要是能ping通配置好了还是不行可以查看防火墙是否关闭

EMCMO--多任务优化求解约束多目标问题

EMCMO–多任务优化求解约束多目标问题 title&#xff1a; An Evolutionary Multitasking Optimization Framework for Constrained Multi-objective Optimization Problems author&#xff1a; Kangjia Qiao, Kunjie Yu, BoyangQu, Jing Liang, Hui Song, and Caitong Yue. …

Redis7 数据类型

Redis7 数据类型 文章目录 Redis7 数据类型1. Redis键&#xff08;Key&#xff09;2. Redis字符串&#xff08;String&#xff09;3. Redis列表&#xff08;List&#xff09;4. Redis哈希表&#xff08;Hash&#xff09;5. Redis集合&#xff08;Set&#xff09;5.1 常用操作5.…