Maven POM入门
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.xml解释 (转)
maven3实战之maven使用入门(编写POM) ---------- maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用 ...
- Maven——快速入门手册(学习记录)
前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...
- (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中
利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目 Dao (jar) Service (jar) Controller (web) ...
- (1)Maven快速入门_1maven安装
Maven 快速入门 1.1 Maven官网下载 windows 系统 下载 下图红色框选处. 下载到本地解压, 创建一个本地maven仓库的目录 maven_lib 配置Maven的环境变量 ...
- maven pom文件结构简析
要使用maven,入门的最好办法就是在myeclipse中直接新建一个maven项目,同时勾选create a simple project选项,这样能快速创建一个简单的默认类型的符合maven默认结 ...
- Java实战及解析 — Maven快速入门
五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...
- Maven 学习(一)-Maven 使用入门
http://www.cnblogs.com/xdp-gacl/p/3498271.html http://www.cnblogs.com/xdp-gacl/p/4240930.html 一.Mave ...
- Maven系列学习(二)Maven使用入门
Maven使用入门 通过上一节的学习,我们已经了解和配置好了Maven,接下来需要编写代码了 1.POM(Project Object Model,项目对象模型) 和Make的Makefile类似,M ...
- Maven快速入门(一)Maven介绍及环境搭建
做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...
随机推荐
- java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片
我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器 ...
- asp.net2.0安全性(1)--用户角色篇(代码实现2)--转载来自车老师
加载所有用户 MembershipUserCollection user = Membership.GetAllUsers(); listUser.DataSource = user; listUse ...
- ASP.NET - Eval使用自定义的方法
<asp:Repeater ID="rep_allnews" runat="server"> <ItemTemplate> <tr ...
- nginx+memcached+ftp上传图片+iis
nginx+memcached+ftp上传图片+iis 自毕业以来,一直在现在公司做订餐系统的开发,那会儿没有口碑,没有饿了么,更别说美团外卖,百度外卖了...因为规模都比较小,都是一个服务器包含数据 ...
- ios开发者创建app应用开发授权文件 实战方法:
收到apple邮件成为合法的开发者后,进入https://developer.apple.com/account/ios/profile/profileList.action页面 总的有4步操作: 1 ...
- [置顶] 64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法
最近为使用Oracle11G数据库做个快速开发的小程序,使用64位Win2008+Vs2012环境,结果碰壁连环,幸好不算太笨,终于解决了,特记录一下. 测试环境: Oracle11g (11.2.0 ...
- web端、android端的文件上传
1.web端的文件上传. 这里是利用了第三方的jar包.这里所需要的jar包我已经上传到本博客的资源里了,以下是连接 http://download.csdn.net/detail/caihongsh ...
- Codeforces Round #306 (Div. 2) D.E. 解题报告
D题:Regular Bridge 乱搞. 构造 这题乱搞一下即可了.构造一个有桥并且每一个点的度数都为k的无向图. 方法非常多.也不好叙述.. 代码例如以下: #include <cstdio ...
- JS - 6款鼠标悬停效果
下载地址:http://www.lanrentuku.com/js/tupian-1093.html
- PP屏幕增强点
生产订单CO01/CO02/CO03屏幕增强 smod:PPCO0012 工票输入CO11N SMOD:CONFPP07 增强里经常会用内存读取数据:比如: ) TYPE c. FIELD-SYMBO ...