Maven的POM.xml详解(五)

本文译自:http://maven.apache.org/pom.html

属性

属性是最后需要理解的POM基础。跟Ant中属性一样,Maven的属性是值的占位符。在一个POM内可以在任何位置使用${X}(X代表属性)符号来访问属性的值。

它们有五种不同的样式:

1. env.x:带有”env”前缀的变量会返回系统的环境变量。例如,${env.PATH}就包含了PATH环境变量。

注意:在Windows系统中环境变量是大小写无关的,也就是说在Windows系统中%PATH%和%Path%的返回值是相同的,但Maven是区分大小写的。为了可靠,Maven2.1.0中环境变量的命名规范统一使用大写。

2. project.x:在POM中使用圆点(.)表示路径来代表相应元素的值,例如通过${project.version>来访问<project><version>1.0</version></project>的值。

3. setting.x:在settings.xml中使用圆点(.)表示路径来代表相关元素的值,例如通过${settings.offline>来访问{settings><offline>false</offline></settings>的值。

4. Java系统的属性:通过java.lang.System.getProperties()可以获取的所有的属性都可以用做POM属性,如${java.home}。

5. x:用于设置POM中<properties/>中对应元素,如可以使用${someVar}来获取或设置<properties><someVar>value</someVar></properties>的值。

编译设置

除了以上讲述的POM的基础知识,在去宣称具备了POM的基本能力之前,还必须要理解两个元素,它们是处理工程的目录结构声明和管理插件的build元素和反映build元素内容的reporting元素。

Build

依据POM 4.0.0的XSD,build元素在概念上被分成两部分,一部分是BaseBuild类型,它包含了两种build元素(位于project元素之下的顶级build元素和位于profiles元素之下的build元素)中的共同元素集;一部分是Build类型,包含了BaseBuild元素集以及更多的元素的顶层定义。下面我们来分析这两部分的共同元素。

注意:可以使用”project build”和”profile build”来区分build元素。

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  ...
  <!-- "Project Build" contains more elements than just the BaseBuild set -->
  <build>...</build>
 
  <profiles>
    <profile>
      <!-- "Profile Build" contains a subset of "Project Build"s elements -->
      <build>...</build>
    </profile>
  </profiles>
</project>

BaseBuild元素集

确切的说,BaseBuild元素集是POM中两种Buil元素之间的基本元素集。

<build>
  <defaultGoal>install</defaultGoal>
  <directory>${basedir}/target</directory>
  <finalName>${artifactId}-${version}</finalName>
  <filters>
    <filter>filters/filter1.properties</filter>
  </filters>
  ...
</build>

defaultGoal:如果没有给定编译目标则使用这个元素设定的值作为执行目标或阶段。它应该跟命令行中定义的目标或阶段相同(如jar:jar或install)。

directory:这个元素指定了编译后的成果物存放的目录,默认是${basedir}/target。

finalName:在编译的时候,这个元素的值会跟对应的工程名称绑定(例如:my-project-1.0.jar),它的默认值${artifactId}-${version}。”finalName”这个术语有些用词不当,但是,跟工程绑定的编译插件会很好的忽略或编辑这个名字(但通常插件不会这么做)。例如,如果给编译目标为jar的classifier元素设置为test,那么maven-jar-plugin实际的编译结果文件时my-project-1.0-test.jar。

filter:这个元素指定了益包含属性列表的*.properties文件,在接收设置的资源中会使用这个文件。在编译时,这个过滤器文件中定义的”name=value”对会被用于替换资源中的${name}字符串。上例中定义的filter1.properties文件在filters/目录下,Maven的默认过滤器目录是${basedir}/src/main/filters/。

有关更多过滤器的信息,请看”快速指南”。

时间: 2024-10-06 04:33:57

Maven的POM.xml详解(五)的相关文章

JavaEE学习之Maven配置文件pom.xml详解(转)

一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节点的意义好好了解一番.今天突然想来了解下:pom- project object model 项目对象模型.顾名思义,他是用来描述项目信息的,以及构建方式,依赖等.网上有一篇文章写的很详细,这里就借用一下,以备日后使用. 二.详解 1 <project xmlns="http://maven.

Maven的POM.xml详解(一)

原文:http://maven.apache.org/pom.html POM是什么? POM是"Project ObjectModel"的首字母缩写,即工程对象模型.它在一个名叫pom.xml的文件中使用XML来表示一个Maven工程.在跟使用Maven的人们一起谈论工程时,工程的概念有些哲学的意义,它不仅仅是一个包含代码的文件的集合.一个工程包含了配置文件.相关的开发者和他们的角色.缺陷跟踪系统.组织机构和授权许可.工程的URL.工程依赖.以及所有的其他的对代码发挥作用的微笑片段.

Maven的POM.xml详解(四)

本文译自:http://maven.apache.org/pom.html 超级POM 与面向对象编程中的对象继承类似,POM会扩展某些继承自父工程的值,而且跟Java对象都继承自基本的java.lang.Object一样,Mavne的所有工程对象模型都继承自基本的超级POM.以下是Maven3.0.4中超级POM的片段: <project>   <modelVersion>4.0.0</modelVersion>     <repositories>   

Maven的POM.xml详解(二)

本文译自:http://maven.apache.org/pom.html POM关系 Maven的强大之一就是它的工程关系的处理能力,它包括依赖(和依赖传递).继承和聚集(多模块的工程).传统的依赖管理让即使是最简单的工程也会变得异常复杂."Jarmageddon"虽然快速,但会让依赖树变得大而复杂."JarHell"在一个系统上所依赖的版本并不等同于那些被开发的版本,它既有可能给出错误的版本,也有可能在相似命名的Jar包之间发生冲突.Maven通过一个共同的本地

Maven学习小结(五 pom.xml详解[转])

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标.如果项目

maven核心,pom.xml详解

什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素. 快速察看: <project> <modelVersion>4.0.0</modelVersion> <!--maven2.0必须是这样写,现在是maven2唯一支持的版本--> <!-- 基础设置 -->

Maven.pom.xml详解

1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> 4 <!--父项目

Maven pom.xml详解(转)

pom文件总体结构 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-

史上最全maven pom.xml详解

1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> 6 7 &l