Maven POM入门
来源:互联网 发布:seo中标签优化 编辑:程序博客网 时间:2024/06/05 23:55
Super POM(project object model)
Maven内置了一个默认的POM(不在项目中,因此不可见),每一个project都会继承自这个默认的POM,因此叫Super POM。除非在项目的配置(POM)中显式的修改,否则使用默认的配置。不同的Maven版本,默认的POM也不一样,遇到问题则需要自己检查。
最小的POM
一个project就是一个artifact,project的全称为: <groupId>:<artifactId>:<version>。
在Maven1中是project.xml,Maven2改成了pom.xml。在Maven1中还有一个maven.xml用于包含可以执行的目标,在Maven2已经配置到了pom.xml中。
<projectxmlns="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"> <modelVersion>4.0.0</modelVersion> <groupId>com.ebay.raptor.samples</groupId> <artifactId>SamplesParent</artifactId> <version>1.1.0-SNAPSHOT</version></project>
artifact可以是任何东西,包括JAR, WAR,POM, EBA文件等。group只是artifact的命名空间,有点类似于java的包。如果项目还处在开发阶段,在版本后会有一个"SNAPSHOT",Maven只允许snapshot artifact被更新,release版本是不能更新的。
modelVersion很重要,因为不同的model,POM的格式是不一样的。
以上几个节点构成了一个最小的POM,这些是POM必须拥有的信息。
继承
如果我们需要把一个artifact放到另一个artifact中,就需要设置继承关系,这个继承关系是由子的module来维护的,因此会在module的pom中有一个parent节点。
<project> <parent> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-module</artifactId> <version>1</version></project>
刚才上面讲的是目录结构是如下的时候:
|-- my-module
| `-- pom.xml
`-- pom.xml
如果目录结构是下面的样子,
|-- my-module
| `-- pom.xml
`-- parent
`-- pom.xml
则需要在parent中添加relativePath节点:
<project> <parent> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1</version> <relativePath>../parent/pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>my-module</artifactId></project>
集成(aggregation)
和继承有点类似,但是父子关系是由父的POM来维护的。方法是在POM中添加modules节点:
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1</version> <packaging>pom</packaging> <modules> <module>my-module</module> </modules></project>
节点module其实是目录名称,因此如果module不在app中,而是与app平级,则可以写成这样:
<modules> <module>../my-module</module> </modules>
项目插值与变量
整个POM相当于一个对象,子节点就是一个个属性,因此可以直接访问:
<version>${project.version}</version>
另外,还有几个特殊的变量:
project.basedir
当前项目所在的目录
project.baseUri
当前项目所在的目录,只不过用 URI的格式表示. 从Maven 2.1.0开始
maven.build.timestamp
Build的开始时间.从Maven 2.1.0-M1开始
在project也可以自定义自己的变量,方法是在properties中添加属性:
<properties> <mavenVersion>2.1</mavenVersion> </properties>
- Maven POM入门
- Maven POM入门
- maven pom简单入门
- maven POM
- Maven - POM
- Maven pom
- maven-pom
- Maven - POM
- Maven - POM
- Maven POM
- Maven pom
- maven pom
- maven pom
- maven3实战之maven使用入门(编写POM)
- Maven入门-3.pom文件和settings文件
- Maven入门2-pom.xml文件与settings.xml文件
- Maven学习笔记之四:Maven使用入门(编写POM)
- Maven学习笔记(八)Maven的入门使用—1.编写POM文件
- 成都传智播客Java基础与加强班
- java.lang.OutOfMemoryError: GC overhead limit exceeded解决
- viewDidLoad,viewWillDisappear, viewWillAppear等区别
- ok6410学习笔记(12.kset学习记录)
- asp.net CheckBoxList 取值与勾选,复选框后台控制前台checkbox选中
- Maven POM入门
- Linux内存管理
- Jquery中的Jquery.extend, Jquery.fn.extend,Jquery.prototype
- js身份证号码的校验,支持15位身份证号和18位身份证号
- untiy3d学习笔记
- Hadoop on Mac OS 实践一:单机配置
- 本人喜欢的并且一直在使用的桌面主题:GO桌面主题-浪漫
- 【全方位解决无法拨号上网的问题】
- mysql存储过程