Maven的六类属性

  • Post author:
  • Post category:其他


转载于:http://php-note.com/article/1724.html



内置属性

主要有两个常用内置属性:

${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变量

<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变量

<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>



自定义变量

<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)