${project.basedir}延申出来的Maven内置的一些常用属性

如:${project.basedir} 是 Maven 的内置属性,可以被 pom.xml 直接识别。它表示当前项目的根目录(即包含 pom.xml 文件的目录)。

Maven 内置的一些常用属性:

  1. 项目相关
xml 复制代码
${project.basedir}        <!-- 项目根目录,即包含pom.xml文件的目录 -->
${project.build.directory} <!-- 构建目录,默认为 target -->
${project.version}        <!-- 项目版本 -->
${project.groupId}        <!-- 项目的groupId -->
${project.artifactId}     <!-- 项目的artifactId -->
  1. 实际使用示例
xml 复制代码
<dependency>
    <groupId>com.iflytek</groupId>
    <artifactId>scylla</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/scylla.jar</systemPath>
</dependency>
  1. 也可以定义自己的属性
xml 复制代码
<properties>
    <lib.dir>${project.basedir}/src/main/resources/lib</lib.dir>
</properties>

<dependencies>
    <dependency>
        <groupId>com.iflytek</groupId>
        <artifactId>scylla</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${lib.dir}/scylla.jar</systemPath>
    </dependency>
</dependencies>
  1. 验证属性值
    你可以使用 Maven 命令来查看这些属性的实际值:
bash 复制代码
mvn help:evaluate -Dexpression=project.basedir -q -DforceStdout
  1. 常见的目录结构

    ${project.basedir}/
    ├── pom.xml
    └── src/
    └── main/
    ├── java/
    └── resources/
    └── lib/
    ├── scylla.jar
    └── mt_scylla.dll

所以,使用 ${project.basedir} 是完全可以的,而且是 Maven 推荐的做法,因为:

  1. 它是 Maven 标准属性,所有 Maven 项目都支持
  2. 它提供了项目路径的可移植性
  3. 不需要硬编码绝对路径
  4. 在不同操作系统上都能正常工作
相关推荐
wang09074 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java4 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
不知名的老吴5 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver6 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89826 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
马士兵教育8 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
snow@li9 小时前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD9 小时前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
zfoo-framework9 小时前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java