Skip to content
鼓励作者:欢迎打赏犒劳

maven中的内置变量

maven中有许多的内置变量,我们可以直接使用,非常的方便

在 Maven 的 pom.xml 文件中,有许多内置变量可以用于配置构建过程。这些变量被称为 Maven 属性(Maven Properties)。以下是一些常见的内置属性:

如何打印变量的值

有时候我们想打印一下来进一步验证下变量是否正确。可以用maven插件来实现,打包的时候就会打印变量了

xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
      <execution>
        <phase>validate</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <target>
            <echo>Basedir: ${basedir}</echo>
            <echo>Project Build Directory: ${project.build.directory}</echo>
            <echo>Final Name: ${project.build.finalName}</echo>
            <echo>Java Version: ${java.version}</echo>
          </target>
        </configuration>
      </execution>
    </executions>
  </plugin>

1. 基础属性

text
${basedir}:项目的根目录,包含 pom.xml 文件的目录。
${project.build.directory}:构建输出目录,默认为 <basedir>/target。
${project.build.outputDirectory}:编译的类文件输出目录,默认为 <project.build.directory>/classes。
${project.build.sourceDirectory}:源码目录,默认为 <basedir>/src/main/java。
${project.build.testSourceDirectory}:测试源码目录,默认为 <basedir>/src/test/java。
${project.build.finalName}:构建输出文件的最终名称,通常是 ${project.artifactId}-${project.version}。

2. 项目信息属性

text
${project.groupId}:项目的 groupId。
${project.artifactId}:项目的 artifactId。
${project.version}:项目的版本号。
${project.name}:项目名称。
${project.description}:项目描述。
${project.url}:项目 URL。
${project.packaging}:项目的打包类型,默认为 jar。

3. 依赖和插件信息属性

text
${project.dependencies}:项目依赖的所有对象。
${project.dependencyManagement.dependencies}:依赖管理部分定义的所有依赖。
${project.pluginRepositories}:插件仓库信息。
${project.reporting}:报告信息。
${project.plugins}:项目的所有插件。

4. 环境属性

text
${env.VARIABLE_NAME}:访问环境变量的属性。例如,${env.PATH} 可以访问 PATH 环境变量的值。

5. 操作系统和用户属性

text
${os.name}:操作系统名称,如 "Windows 10" 或 "Linux"。
${os.version}:操作系统版本。
${os.arch}:操作系统架构,如 "amd64"。
${user.name}:当前用户的用户名。
${user.home}:当前用户的主目录。
${user.dir}:当前工作目录。

6. 文件路径属性

text
${file.separator}:文件分隔符(/ 在 UNIX 上,\ 在 Windows 上)。
${path.separator}:路径分隔符(: 在 UNIX 上,; 在 Windows 上)。
${line.separator}:行分隔符(\n 在 UNIX 上,\r\n 在 Windows 上)。

7. Java 系统属性

text
${java.version}:正在运行的 Java 运行环境的版本。
${java.home}:正在运行的 Java 运行环境的安装目录。
${java.vendor}:Java 供应商的名称。
${java.vendor.url}:Java 供应商的 URL。
${java.class.version}:Java 类格式版本号。
${java.specification.name}:Java 运行时环境的规范名称。
${java.specification.version}:Java 运行时环境的规范版本。
${java.specification.vendor}:Java 运行时环境的规范供应商。
${java.vm.name}:Java 虚拟机的名称。
${java.vm.version}:Java 虚拟机实现版本。
${java.vm.vendor}:Java 虚拟机实现供应商。
${java.vm.specification.name}:Java 虚拟机规范名称。
${java.vm.specification.version}:Java 虚拟机规范版本。
${java.vm.specification.vendor}:Java 虚拟机规范供应商。

8. Maven 构建信息属性

text
${maven.version}:正在使用的 Maven 的版本。
${maven.build.timestamp}:Maven 构建的时间戳。

9. 其他属性

你还可以在 pom.xml 的 <properties> 部分自定义属性,并在 pom.xml 中使用:

text
<properties>
    <my.custom.property>Hello, world!</my.custom.property>
</properties>

<build>
    <finalName>${my.custom.property}-${project.version}</finalName>
</build>

如有转载或 CV 的请标注本站原文地址