当前位置: 首页 > article >正文

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 {

    @Test
    void 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.kler.cn/news/357670.html

相关文章:

  • 【0day】ChatGPT个人专用版 pictureproxy SSRF漏洞【附poc下载】
  • 15.java面向对象:多态
  • 可达性分析法
  • 2024-10-15 Nuxt3打包部署到Nginx流程
  • [LeetCode] 210. 课程表II
  • 对Android的Binder机制的了解
  • 汽车建模用什么软件最好?汽车建模渲染建议!
  • 【力扣 | SQL题 | 每日4题】力扣2308,2324,2346,2372
  • 特斯联|日常|Java|后端开发
  • LeetCode LRU 缓存
  • MySQL创建和管理表
  • 第15篇:网络架构优化与综合案例分析
  • C/C++程序员为什么要了解汇编?汇编语言的好处与学习路径详解
  • 《环境感知:开启智能生活新视角》
  • 怎么快速定位bug?怎么编写测试用例?
  • 基于SSM发改局电子OA办公平台JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • ArcGIS无插件加载(无偏移)在线天地图高清影像与街道地图指南
  • vue3处理货名的拼接
  • 全网免费的文献调研方法以及获取外网最新论文、代码和翻译pdf论文的方法(适用于硕士、博士、科研)
  • 使用FPGA制作一个便携式 ADAS 系统