Maven常用标签解释
<groupId>:GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
<artifactId>:ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
<version>:指定了项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
<name>:声明了一个对于用户更为友好的项目名称,不是必须的
<parent>:Maven项目之间的继承关系通过<parent>表示,子项目中用parent标签继承父项目
子项目能继承的父项目的属性
- dependencies
- developers
- contributors
- plugin lists
- reports lists
- plugin executions with matching ids
- plugin configuration
SUPER POM:在Maven中也存在一个特殊的POM,被称为Super POM。任何Maven项目的POM都继承自Super POM。
在Super POM中,设置如下:
- Maven的central库
- Maven的central插件库
- build的基本参数和4个插件(maven-antrun-plugin、maven-assembly-plugin、maven-dependency-plugin和maven-release-plugin)
- reporting的基本目录
- 一个profile(id=release-profile)
<relativePath>:父项目相对于子项目的路径,这样在构件子项目时首先从该相对路径查找父项目,如果没有才会从本地库或进而远程库中查找父项目。
<Properties>:Maven属性是值占位符。它们的值可以通过使用符号${X}在POM中的任何位置访问,其中X是属性。还可以在properties文件中使用pom.xml配置的属性
1、env.X:使用“env”来定义变量。将返回shell的环境变量。例如,${env.PATH}包含PATH环境变量。
注意:虽然环境变量本身在Windows上不区分大小写,但查找属性区分大小写。换句话说,虽然Windows shell为%PATH%和%Path%返回相同的值,但Maven区分${env.PATH}和${env.Path}。对于Maven 2.1.0,为了可靠性,环境变量的名称被归一化为所有大写。
2、project.x:POM中的点(.)记号路径将包含相应元素的值。例如:可以通过${project.version}访问<project><version>1.0</version></project>。
3、settings.x:settings.xml中的点(.)标注路径将包含相应的元素的值。例如:<settings><offline>false</offline></ settings>可通过${settings.offline}访问。
4、Java系统属性:可通过java.lang.System.getProperties()访问的所有属性都可用作POM属性,如${java.home}。
5、x:在POM中的<properties />元素中设置。<properties><someVar>value</someVar></properties>的值可以用作${someVar}。
<modules>:用来管理同个项目中的各个模块
<packaging>:表示项目的打包类型【默认:jar类型】
<packaging>pom</packaging>:使用maven分模块管理
<packaging>jar</packaging>:打成jar包
<packaging>war</packaging>:打成war包
<build >:如何来编译及打包项目
一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。
<resources>: 一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里
<directory>:定义resource文件所在的文件夹,默认为${basedir}/src/main/resources
<targetPath>:指定build后的resource存放的文件夹,默认是basedir。通常被打包在jar中的resources的目标路径是META-INF
<filtering>: true/false,表示为这个resource,filter是否激活,true代表使用filters里面的变量值替换
<includes>: 指定哪些文件将被匹配,以*作为通配符
<excludes>:指定哪些文件将被忽略
<filters>:定义*.properties文件,包含一个properties列表,该列表会应用到支持filter的resources中。
定义在filter的文件中的name=value键值对,会在build时代替${name}值应用到resources中。
maven的默认filter文件夹为${basedir}/src/main/filter
<profiles>:根据激活环境的不同,自定义字段被赋予不同的值。
<activeByDefault>:指定默认激活profile
<executions>: 该插件的某个goal(一个插件可能有多个goal)的执行方式
<extensions>:是否加载该插件的扩展,默认false
<goals>:要执行的插件的goal.这个是可以有多个的
<phase>:插件的goal要嵌入到Maven的phase中执行
<inherited>:是否可被子项目继承
<configuration>:配置参数