Maven实战. 3.1编写POM

3.1编写POM

就像Make的Makefile、Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。现在先为Hello World项目编写一个最简单的pom.xml。

首先创建一个名为helloworld的文件夹,打开该文件夹,新建一个名为pom.xml的文件,输入其内容,如代码清单3-1所示。代码清单3-1Hello World的POM

 

<?xml version="1.0" encoding="UTF-8"?>

<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">

<modelVersion>4.0.0</modelVersion>

<groupId>com.juvenxu.mvnbook</groupId>

<artifactId>helloworld</artifactId>

<version>1.0SNAPSHOT</version>

<name>Maven Hello World
Project</name>

</project>

 

代码的第一行是XML头,指定了该xml文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如IDE中的XML编辑器)帮助我们快速编辑POM。

根元素下的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven 2及Maven 3来说,它只能是4.0.0。

这段代码中最重要的是包含groupId、artifactId和version的三行。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。

groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。本书中所有的代码都基于groupId
com.juvenxu.mvnbook。

artifactId定义了当前Maven项目在组中唯一的ID,我们为这个Hello World项目定义artifactId为helloworld,本书其他章节代码会分配其他的artifactId。而在前面的groupId为com.googlecode.myapp的例子中,你可能会为不同的子项目(模块)分配artifactId,如myapputil、myappdomain、myappweb等。

顾名思义,version指定了Hello World项目当前的版本——1.0SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0、1.1SNAPSHOT、1.1、2.0等。6.5节会详细介绍SNAPSHOT,第13章会介绍如何使用Maven管理项目版本的升级发布。

最后一个name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个POM声明name,以方便信息交流。

没有任何实际的Java代码,我们就能够定义一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,我们可以称之为解耦,或者正交性。这在很大程度上避免了Java代码和POM代码的相互影响。比如当项目需要升级版本时,只需要修改POM,而不需要更改Java代码;而在POM稳定之后,日常的Java代码开发工作基本不涉及POM的修改。

时间: 2024-08-04 12:06:54

Maven实战. 3.1编写POM的相关文章

Maven实战. 3.2编写主代码

3.2编写主代码 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(如jar),而测试代码只在运行测试时用到,不会被打包.默认情况下,Maven假设项目主代码位于src/main/java目录,我们遵循Maven的约定,创建该目录,然后在该目录下创建文件com/juvenxu/mvnbook/helloworld/HelloWorld.java,其内容如代码清单3-2所示:代码清单3-2Hello World的主代码   package com.juvenxu.mvnbook.hel

Maven实战

Maven 实战 许晓斌  著 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑. 本书是国内第一本公开出版的Maven专著.它内容新颖,基于最新发布的Maven 30,不仅详尽讲解了Maven 30的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2x版本进行了对比,以便于正在使用Maven 2x版本的用户能更好地理解.本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装.配置和基本使用方法,以便于初学者参考:详细

Maven实战. 导读

Maven 实战 许晓斌  著 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑. 本书是国内第一本公开出版的Maven专著.它内容新颖,基于最新发布的Maven 30,不仅详尽讲解了Maven 30的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2x版本进行了对比,以便于正在使用Maven 2x版本的用户能更好地理解.本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装.配置和基本使用方法,以便于初学者参考:详细

[Maven实战](5)Archetype生成项目骨架

Hello World项目中有一些Maven的约定:在项目根目录中放置pom.xml,在src/main/java目录下放置项目的主代码,在sc/test/java中放置项目的测试代码.之所以一步一步的展示这些步骤,就是为了让我们这些菜鸟得到最真实的感受.我们称这些基本的目录结构和pom.xml文件内容为项目的骨架. 如下就是我们项目的目录结构骨架: 但是我们不希望每次创建项目时,都是手动一个一个的创建我们的目录结构,重复这些没有什么意义的事情.为此Maven提供了Archetype来帮助我们快

[Maven实战](4)eclipse创建Maven项目

介绍前面Hello World项目的时候,并没有涉及IDE,这样一个简单的项目,使用最简单的编辑器也能完成.但是对一个稍微大一些的项目来说,还是推荐使用IDE.这一篇文章我们在m2eclipse帮助下使用eclipse创建Maven项目. 1. 创建 使用IDE创建一个Maven项目非常简单,选择菜单项File->New->Other,在弹出的对话框中选择Maven下的Maven Project,然后点击Next按钮. 图1 在弹出的New Maven Project对话框中,使用默认的选项.

[Maven实战](3)Maven创建项目

前两篇文章我们已经大概了解并安装好了Maven.现在我们开始使用Maven创建项目,在此我们创建一个最简单的Hllo World项目.让我们对Maven有一个初步的认识,对于其中的诸多要点与疑点,以后文章中慢慢一起学习.所以这篇文章主要是让我们对Maven创建项目的流程有一个大概的了解. 1. Maven项目目录结构 2. 主代码 默认情况下项目主代码位于src/main/java目录下,遵循这个约定,创建该目录,然后在该目录下创建文件com/sjf/model/helloworld.java

《maven实战》学习笔记7——maven项目版本管理和灵活构建

说明 <maven实战>一书内容很多,整个maven要学的东西也很多,不过,结合个人实际情况,我打算把这一篇作为这次对maven学习的一个阶段性收尾,待其他更急需补充的知识有一定眉目了,再回过头来继续深入. maven版本管理 对于maven版本管理,最重要的是需要区分出快照版本SNAPSHOT和发布版本release,据目前的了解,快照版本格式是固定的,而发布版本有几种,例如带release单词的和不带release单词的. 快照版本由于每次发布都带时间戳,所以适用于开发阶段团队协作,但同时

《maven实战》学习笔记1——maven是什么?为什么要用maven?

前言 工欲善其事,必先利其器.对于java web开发者而言,或者说对于目前大部分java web开发者而言,eclipse.maven.svn.tomcat可能就是目前最常用也是必会的武器了,所以为了更高效的开发和解决问题,经过一番思考后我决定系统性的学学这几样武器. 这几样在我看来一样的重要,也就没有先后之分.都要学,于是我便随便抽了一个,就先从maven开始,主要是结合<maven实战>一书的电子版和纸质版来学习和实践. 为了更好的记忆,同时也为了能在学习的过程中帮到更多人,遂决定做这个

Maven实战1.1何为Maven

Maven实战第1章Maven简介1.1何为Maven Maven这个词可以翻译为"知识的积累",也可以翻译为"专家"或"内行".本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息管理.无论是小型的开源类库项目,还是大型的企业级应用:无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手. 1.1.1何为构建 不管你是否意识到