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 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 descrīptive 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>
<!-- the year the project started -->
<inceptionYear>2005</inceptionYear>
<package>prjcyspapp</package>
<logo>http://maven.apache.org/images/maven.jpg</logo>
<descrīption>北京市××区网上审批系统 </descrīption>
<!-- a short descrīption of what the project does -->
<shortDescrīption>××区网上审批在线服务系统是在北京市的统一领导下,按照统一规划、统一领导、改进服务、提高效率的原则,以推进行政审批制度改革、优化发展环境为目的,以服务企业、服务纳税人为根本宗旨,以北京市电子政务网络平台为依托,在现有××区投资服务大厅网上咨询审批系统的基础上,进一步改造升级,优化整合资源,建立统一的、面向社会公众的××区网上审批在线服务系统平台,提高办事效率和公共服务质量。 </shortDescrīption>
<!-- the project home page -->
<url>http://maven.apache.org/reference/plugins/examples/</url>
<issueTrackingUrl>http://nagoya.apache.org/scarab/servlet/scarab/</issueTrackingUrl>
<siteAddress>jakarta.apache.org</siteAddress>
<siteDirectory>/www/maven.apache.org/reference/plugins/examples/</siteDirectory>
<distributionDirectory>/www/maven.apache.org/builds/</distributionDirectory>
<!-- the version control repository and http url for online access
the connection element has the form:
scm:<system>:<system specific connection string> -->
<repository>
<connection>scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:maven-plugins/examples</connection>
<url>http://cvs.apache.org/viewcvs/maven-plugins/examples/</url>
</repository>
<!-- any mailing lists for the project -->
<mailingLists/>
<!-- who the developers are for the project -->
<developers>
<developer>
<name>张三 </name>
<id>anli</id>
<email>anli@sohu.com</em