内置属性
主要有两个常用内置属性:
${basedir}
项目的根目录(包含pom.xml文件的目录),
${version}
项目版本
POM属性
用户可以使用该属性引用POM文件中对应元素的值,常用的POM属性包括:
${project.build.sourceDirectory}
:项目的主源码目录,默认为 src/main/java
${project.build.testSourceDirectory}
:项目的测试源码目录,默认为 src/test/java
${project.build.directory}
:项目构件输出目录,默认为 target/
${project.outputDirectory}
:项目主代码编译输出目录,默认为 target/classes/
${project.testOutputDirectory}
:项目测试代码编译输出目录,默认为 target/test-classes/
${project.groupId}
:项目的 groupId
${project.artifactId}
:项目的 artifactId
${project.version}
:项目的 version,与${version}等价
${project.build.fianlName}
:项目打包输出文件的名称。默认为
${project.artifactId}-${project.version}
自定义属性
用户可以在POM的
<properties>
元素下自定义Maven属性
Settings属性
用户使用
settings.
开头的属性引用 settings.xml 文件中XML元素的值
Java系统属性
所有Java系统属性都可以使用Maven属性引用
环境变量属性
所有环境变量都可以使用以env.开头的Maven属性引用
在依赖中 使用pom变量
1
2
3
4
5
6
7
8
9
10
11
12
|
<
dependencies
>
<
dependency
>
<
groupId
>${project.groupId}</
groupId
>
<
artifactId
>part-a</
artifactId
>
<
version
>${project.version}</
version
>
</
dependency
>
<
dependency
>
<
groupId
>${project.groupId}</
groupId
>
<
artifactId
>part-b</
artifactId
>
<
version
>${project-version}</
version
>
</
dependency
>
</
dependencies
>
|
在插件中使用pom变量
1
2
3
4
5
6
7
8
|
<
plugin
>
<
groupId
>org.apache.maven.plugins</
groupId
>
<
artifactId
>maven-surefire-plugin</
artifactId
>
<
version
>2.5</
version
>
<
configuration
>
<
repositoryDirectory
>${project.build.directory}/test-reports</
repositoryDirectory
>
</
configuration
>
</
plugin
>
|
自定义变量
1
2
3
4
5
6
7
8
9
10
11
|
<
profiles
>
<
profile
>
<
id
>dev</
id
>
<
properties
>
<
db.driver
>com.mysql.jdbc.Driver</
db.driver
>
<
db.url
>jdbc:mysql://localhost:3360/test</
db.url
>
<
db.username
>username</
db.username
>
<
db.password
>password></
db.password
>
</
properties
>
</
profile
>
</
profiles
>
|
Maven属性默认只有在POM中才会被解析,因此需要让Maven解析资源文件中的Maven属性。Maven用
maven-resources-plugin
处理资源文件。它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。
Maven默认的主资源目录和测试资源目录的定义是在超级POM中,要为资源目录开启过滤,只要在此基础上添加一行filtering配置即可。
Filtering是maven resource插件的功能,作用是用环境变量,pom文件里定义的属性和指定文件里的属性替换属性文件的占位符。(超级pom在 apache-maven-3.3.9\lib\maven-model-builder-3.3.9.jar\org\apache\maven\model\pom-4.0.0.xml)