如:${project.basedir}
是 Maven 的内置属性,可以被 pom.xml 直接识别。它表示当前项目的根目录(即包含 pom.xml 文件的目录)。
Maven 内置的一些常用属性:
- 项目相关:
xml
${project.basedir} <!-- 项目根目录,即包含pom.xml文件的目录 -->
${project.build.directory} <!-- 构建目录,默认为 target -->
${project.version} <!-- 项目版本 -->
${project.groupId} <!-- 项目的groupId -->
${project.artifactId} <!-- 项目的artifactId -->
- 实际使用示例:
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>
- 也可以定义自己的属性:
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>
- 验证属性值 :
你可以使用 Maven 命令来查看这些属性的实际值:
bash
mvn help:evaluate -Dexpression=project.basedir -q -DforceStdout
-
常见的目录结构:
${project.basedir}/
├── pom.xml
└── src/
└── main/
├── java/
└── resources/
└── lib/
├── scylla.jar
└── mt_scylla.dll
所以,使用 ${project.basedir}
是完全可以的,而且是 Maven 推荐的做法,因为:
- 它是 Maven 标准属性,所有 Maven 项目都支持
- 它提供了项目路径的可移植性
- 不需要硬编码绝对路径
- 在不同操作系统上都能正常工作