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>