Maven有六类属性:
1)内置属性
主要有两个常用内置属性
${basedir}:表示项目根目录,即包含pom.xml文件的目录;
${version}:表示项目版本;
2)POM属性
${M2_HOME}/lib/maven-model-builder-3.2.3.jar/org/apache/maven/model/pom-4.0.0.xml
.....
1 <build> 2 <directory>${project.basedir}/target</directory> 3 <outputDirectory>${project.build.directory}/classes</outputDirectory> 4 <finalName>${project.artifactId}-${project.version}</finalName> 5 <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory> 6 <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> 7 <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory> 8 <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory> 9 <resources> 10 <resource> 11 <directory>${project.basedir}/src/main/resources</directory> 12 </resource> 13 </resources> 14 <testResources> 15 <testResource> 16 <directory>${project.basedir}/src/test/resources</directory> 17 </testResource> 18 </testResources> 19 <pluginManagement> 20 <!-- NOTE: These plugins will be removed from future versions of the super POM --> 21 <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) --> 22 <plugins> 23 <plugin> 24 <artifactId>maven-antrun-plugin</artifactId> 25 <version>1.3</version> 26 </plugin> 27 <plugin> 28 <artifactId>maven-assembly-plugin</artifactId> 29 <version>2.2-beta-5</version> 30 </plugin> 31 <plugin> 32 <artifactId>maven-dependency-plugin</artifactId> 33 <version>2.8</version> 34 </plugin> 35 <plugin> 36 <artifactId>maven-release-plugin</artifactId> 37 <version>2.3.2</version> 38 </plugin> 39 </plugins> 40 </pluginManagement> 41 </build>
....
用户可以使用该属性引用POM文件中对应元素的值。常用的POM属性包括
${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java
${project.build.testSourceDirectory}:项目的测试源码目录,默认为src/test/java
${project.build.directory}:项目构建输出目录,默认为target/
${project.outputDirectory}:项目主代码编译输出目录,默认为target/
${project.testOutputDirectory}:项目测试代码编译输出目录,默认为target/test-classes/
${project.groupId}:项目的groupId
${project.artifactId}:项目的artifactId
${project.version}:项目的version,与${version}等价
${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}
3)自定义属性
用户可以在POM的<properties>元素下自定义Maven属性,例如:
1 <properties> 2 <junit.version>4.8</junit.version> 3 <dubbo.version>2.5.3</dubbo.version> 4 <freemarker.version>2.3.19</freemarker.version> 5 <edi-un.version>0.0.1</edi-un.version> 6 <edi-framework.version>4.0.1</edi-framework.version> 7 <!-- alibaba druid --> 8 <druid.version>0.2.20</druid.version> 9 <dubbo.version>2.5.3</dubbo.version> 10 <zkclient.version>0.10</zkclient.version> 11 <!-- 缓存 --> 12 <jedis.version>2.2.0</jedis.version> 13 14 <freemarker.version>2.3.19</freemarker.version> 15 16 <!-- spring hibernate jpa begin --> 17 <hibernate.version>4.2.11.Final</hibernate.version> 18 <hibernate-validator.version>4.2.0.Final</hibernate-validator.version> 19 <hibernate-commons-annotations>4.0.2.Final</hibernate-commons-annotations> 20 <hibernate-jpa-2.0-api>1.0.1.Final</hibernate-jpa-2.0-api> 21 <spring.version>3.1.1.RELEASE</spring.version> 22 <persistence.version>1.0</persistence.version> 23 <javassist.version>3.12.0.GA</javassist.version> 24 </properties>
4)Settings属性
与POM属性同理,用户使用以setting.开头的属性引用settings.xml文件中XML元素的值,如常用的${settings.localRespository}指定用户本地仓库的地址
5)Java系统属性
所有Java系统属性都可以使用Maven属性引用,例如${user.home}指向了用户目录。用户可以使用mvn help:system查看所有的Java系统属性
6)环境变量属性
所有环境变量都可以使用以env.开头的Maven属性引用。例如${env.JAVA_HOME}指代了JAVA_HOME环境变量的值。用户可以使用mvn help:system查看所有的环境变量
本文深入解析Maven的六类属性,包括内置属性、POM属性、自定义属性、Settings属性、Java系统属性及环境变量属性,阐述它们在构建过程中的作用与应用。

4216

被折叠的 条评论
为什么被折叠?



