Mave项目管理实战演练
作者:李俊杰
Mave项目是开放源代码公司Apache的又一力作,是项目管理的利器,是针对Ant项目的不足而开发的,除了拥有Ant的构建项目的特色外,还有项目高级管理工具,项目管理者可以轻松地了解项目的各种情况。
下面结合本人对Maven的了解和实践,特总结如下:
u Maven的下载和安装
u Maven的配置和管理
u Maven项目继承问题说明
u Maven和VSS集成
u Maven 定制javadoc
u 常用的命令goal
u Maven注意事项
Maven的下载和安装
1) 下载Maven,在http://maven.apache.org/start/download.html地址下载Maven的最新版本(点击windows.exe,我的操作系统是windows),即到如下下载地址 http://www.apache.org/dyn/closer.cgi/maven/binaries/maven-1.0.2.exe,我使用Http下载(点击http://apache.justdn.org/maven/binaries/maven-1.0.2.exe)下载到本地。(在网上看到许多网友下载Maven失败,所以加以详细说明)
2) 安装Maven,如果你的机器上没有安装j2sdk,安装将j2sdk,然后设置java-home(windows:我的电脑(右键)->属性->高级->环境变量->用户变量->新建(如:java-home C:/j2sdk1.4.2_01)),然后就可以直接运行maven-1.0.2.exe顺利安装。
3) 设置maven-home,类似于设置java-home,根据Maven的安装路径(${maven-home})设置如 maven-home d:/Maven1.02
4) 汉化Maven的dos控制台输出,用解压缩工具(如WinRar)打开${maven-home}/lib/maven.jar,找到并拖出org\apache\maven\messages\Message_zh_CN.properties,如果Message_zh_CN.properties文件的编码不是美国信息互换标准代码(ASCII),则使用java中的nativie2ascii命令把Message_zh_CN.properties转变为美国信息互换标准编码(ASCII)。并把转换后的文件名称也命名为Message_zh_CN.properties,然后拖入maven.jar的org\apache\maven\messages\中,覆盖原来的文件。转换步骤:打开dos界面,进入D:\bea\jdk141_03\bin>native2ascii Message_zh_CN.properties test.properties ,然后再把test.properties,重命名为Message_zh_CN.properties。
5) 开始->运行->cmd->进入dos界面,然后输入maven回车,如出现下面的情况,则说明安装成功。
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
C:\Documents and Settings\lijj>maven
- __ __
- | \/ |__ _Apache__ ___
- | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~
- |_| |_\__,_|\_/\___|_||_| v. 1.0.2
-
- BUILD SUCCESSFUL
- Total time: 1 seconds
- Finished at: Thu Mar 03 <time minute="55" hour="16"></time>16:55:06 CST 2005
-
Maven的相关配置和管理
Maven的主要组件包括项目对象模型(Project Object Model POM),资源库(Repository)和目标(goals),现在根据实际例子来说明各个组件。其中项目对象模型一般是用project.xml来管理项目,而Repositroy主要提供项目所需要的jar文件,包括不同的版本,goals主要包括maven.xml和相关的插件(plugs)。
另外还包括属性文件如project.properties,build.properties.。属性文件的优先级是${user.home}/build.properties,${basedir}/build.properties,${basedir}/project.properties,(其中${user.home}表示本用户目录如C:\Documents and Settings\lijj,${basedir}表示项目project.properties所在目录,如D:\maventest)优先级前者最高,后者最低。即后者定义了某属性,前者也定义了该同名的属性,则以前者为准。由于Maven在项目管理方面有继承的概念,但不适合于build.properties文件。所以我们在项目管理中一般不用build.properties,只用project.properties文件来定义项目所需的属性。
创建项目
象我们平常创建项目一样,创建一个工作目录(d:/maventest),并把相关项目文件(如jsp,java,properties,img,js,xml等等)copy到该目录下
创建项目所需要的lib(即.jar文件)
因为maven倡导的思想是通过网络来实现项目管理,因此使用CVS来控制版本,我们现在更多的是采用VSS(source safe)来控制版本。Maven的Repository就体现了集中管理资源的思想,根据项目所要用到的jar资源文件进行网络统一管理,而我们现在更趋向于使用本机的资源文件。
1)首先在项目的属性文件project.properties中定义
##本地资源位置
maven.repo.local=d:/Maven 1.0.2/repository
##是否使用远程repository
maven.repo.remote.enabled=false
2)其次在本地的资源库中创建该项目所要使用lib,如d:/Maven 1.0.2/repository/bjcy/jars,然后把该项目所用的jar 文件copy到该目录(d:/Maven 1.0.2/repository/bjcy/jars)下,weblogic.jar, appmodules.jar,opendata.jar等等,使用解压缩工具(如WinRar)打开这些jar文件,找META-INF目录下的MANIFEST.MF文件,如果没有找到表明没有版本说明,则修改文件名(如jarname.jar->jarname-.jar,在文件名后加一横线),如果找到MANIFEST.MF文件,打开后看到Manifest-Version: 1.0,则表示该jar文件的版本号为1.0,修改文件名(如jarname.jar->jarname-1.0.jar)
3) 最后在project.xml文件中写明该项目要依赖的资源
<!-- jar files the project is dependent on -->
<dependencies>
<dependency>
<groupId>bjcy</groupId>
<artifactId>weblogic</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>bjcy</groupId>
<artifactId>appmodules</artifactId>
</dependency>
。。。。。。。。。
</dependencies>
该文档表示weblogic.jar文件的版本是1.0,appmodules.jar文件没有版本说明,且所有要依赖的jar都在bjcy/jars下面。
project.xml文件说明
project.xml是Maven项目管理的核心文件,主要说明项目的必须的内容
<?xml version="1.0" encoding="gb2312"?>
<!--encoding=”gb2312”表示支持中文-->
<project>
<!-- the version of maven's project object model -->
<pomVersion>3</pomVersion>
<!-- a unique name for this project -->
<id>prjcyspapp</id>
<!-- a short but descriptive name for the project -->
<name>prjcyspapp</name>
<!-- The version of the project under development, e.g.
1.1, 1.2, 2.0-SNAPSHOT -->
<currentVersion>1.0</currentVersion>
<!-- details about the organization that 'owns' the project -->
<organization>
<name>北京××××软件公司</name>
<url>http://www.apache.org/</url>
<logo>http://maven.apache.org/images/jakarta-logo-blue.gif</logo>
</organization>