Maven不仅是一个新建工具。如果正确使用,它还能帮助你管理项目及进行配置。下面我们来进行说明。
在这个系列以前的文章中,我们讨论了“开发Swing应用程序”和“用网络服务功能开发一个混合Swing应用程序”。现在,我们把它们结合起来,讨论如何将这些代码应用到一个能够配置到服务器上的网络应用程序中。
我们主要改变了建立应用程序所使用的方法。之前我们用过Ant,但这次我们换用Apache Maven,它具有更强的生命周期导向性,现在已发布第二版。虽然我们用Maven代替Ant,但不要认为Maven只是一个建立工具。它还可通过最佳实践模式对项目进行管理。如果我们首先安装Maven,再获取本月的ToDoTasks源代码,将会更加方便。
首先你会发现目录树相当简单。在顶部有一个src目录和一个pon.xml文件,这个文件即项目对象模型(POM),它保存所有与项目有关的信息。POM文件告诉Maven如何建立一个它所称的artifact,它有一个名称,在jar或war文件中称为组和版本和映射。因此POM最先拥有的是我们正在建立的artifact信息:
<?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> |
这是强制性的开端部分。我们打开一个项目元素,然后就会出现一个必需的modelVersion元素,它说明我们正在使用哪个POM版本。现在进入artifact信息。
<groupId>uk.builder</groupId>
<artifactId>todotasks</artifactId>
groupID是一个针对一串artifact的唯一标识符。在上例中,它为uk.builder。artifactID是组中artifact的唯一名称。它们共同为artifact命名,而非说明它的版本。
<version>2.0-SNAPSHOT</version>
这是我们的版本。-SNAPSHOT是一个说明“开发中”版本的Maven实例。现在,虽然我们有了项目的工作名称,我们还需要一个显示名称。
<name>ToDoTasks</name>
在需要显示artifact的名称时,Maven将使用这个名称。现在讨论最重要的部分:
<packaging>war</packaging>
<packaging>和</packaging>之间的元素可以为值jar、war或ear。我们正在建立一个网络应用程序,所以我们使用war。这不只是说明我们封装artifact的方法(初看起来是这样),实际上它影响artifact的整个生命周期。
现在,我们暂停讨论POM文件,再来了解src目录。
src -+-> main -+-> java -> com -> builder -> uk -> todotasks
||
|+-> webapp -+-> META-INF
||
|+-> WEB-INF
|
+-> test -+-> java -> com -> builder -> uk -> todotasks
Maven项目的src目录在一个主目录和其它子目录下保存所有源代码,java代表Java源代码,webapp代表网络应用程序代码。测试代码是唯一的例外,它保存在test目录下的一个平行目录中。你会发现其中没有jar文件的库目录,这是因为Maven并不需要它。
Maven根据jar/war/ear文件贮藏库来考虑问题,每个库都有各自的组ID,artifact ID和版本,这些文件称之为artifact。在本地系统中,你拥有自己的贮藏库,它一般位于主目录的.m2目录下。Maven新建一个项目的目的是建立一个artifact,它可以安装到这个贮藏库中,以方便其它项目使用。还有远程贮藏库,Maven可通过它们获得artifact拷贝,再把它们安装到本地贮藏库中,同样是为了方便其它项目使用。
Maven通过pom.xml文件中的另一个区域——依赖区域——来了解需要哪些artifact。
<dependencies> <dependency> <groupId>jdbm</groupId> <artifactId>jdbm</artifactId> <version>1.0</version> </dependency> |
[1] [2] [3] [4] 下一页