Maven

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件 项目管理工具
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由 CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。  [1]  
中文名
麦文
外文名
Maven
本    质
项目对象模型
分    类
java
定    义
项目构建管理

特点

编辑
那么,Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和  Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。 [1]  
  Maven Ant
标准构建文件 project.xml 和 maven.xml build.xml
特性处理顺序
${maven.home}/bin/driver.properties
${project.home}/project.properties
${project.home}/build.properties
${user.home}/build.properties
通过 -D 命令行选项定义的系统特性
最后一个定义起决定作用。
通过 -D 命令行选项定义的系统特性
由 任务装入的特性
第一个定义最先被处理。
构建规则 构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。 构建规则或多或少是静态的,除非使用<script>任务
扩展语言 插件是用 Jelly(XML)编写的。 插件是用 Java 语言编写的。
构建规则可扩展性 通过定义 <preGoal> 和 <postGoal> 使构建 goal 可扩展。 构建规则不易扩展;可通过使用 <script> 任务模拟 <preGoal> 和 <postGoal> 所起的作用。
Maven是一个 项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个 项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中 插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的 插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

常用命令

编辑
mvn archetype:create 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvn jetty:run 启动jetty服务
mvn tomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

推荐书籍

编辑
发文时中文版对maven介绍比较全的书籍是《Maven实战》

Win7配置

编辑
首先要安装Jdk1.6 和 Myeclipse7.5 。
1. Maven有一个重要的文件"settings.xml“,这个文件来源于apache-maven-2.0.8/conf/ 下,要放在window下, Win7和Winxp还是有点不一样 , Win7 ---C:\Users\用户名\.m2 , Winxp ---C:\Documents and Settings\用户名\.m2 。
2. 设置Maven的 环境变量,基本上和设置Jdk环境变量相似,首先设置MAVEN_HOME,再加入Path 。
3. 修改”settings.xml” 文件,在这个文件中找到<localRepository>d:/work</localRepository>这一行,进行修改。这一行代表了Maven的Jar包仓库的位置。work下放的都是项目所用到的jar包,每个Project都可以共用一个work。
4. Myeclipse7.5及以上版本本身自带Maven 插件。如果使用低版本的Myeclipse需要安装插件,在help菜单中选择software updates,选择find and install,选择search for new features to install-选择new remote site。写入 name:maven URL:http:// m2eclipse.codehaus . org/update/去下载相关jar包和插件。
5. 在Myeclipse中windows-perferences中,在下图的位置上,查看users settings的路径是否正确。
6. 建立Maven的project,File--new—other—Java Maven Project。
7. 然后打开project里pom.xml文件,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
< modelVersion >4.0.0</ modelVersion >
< groupId >maventest</ groupId >
< artifactId >maventest</ artifactId >
< packaging >jar</ packaging >
< version >0.0.1-SNAPSHOT</ version >
< name >MavenQuickStartArchetype</ name >
< url >http://maven.apache.org</ url >
< dependencies >
< dependency >
< groupId >junit</ groupId >
< artifactId >junit</ artifactId >
< version >3.8.1</ version >
< scope >test</ scope >
</ dependency >
</ dependencies >
</ project >
在这xml文件中添加Maven所依赖的Jar的名称,也就是添加<dependency></dependency>节点。
例如:添加大家常用的Struts Jar包
1
2
3
4
5
< dependency >
< groupId >org.apache.struts</ groupId >
< artifactId >struts2-core</ artifactId >
< version >2.0.11</ version >
</ dependency >
8. 到发文时为止,环境就算搞定了。接下来要应用Maven来打包Project为大家服务的。
在cmd中的命令:
a. mvn eclipse:clean 清除Project中以前的编译的东西,重新再来
b. mvn eclipse:eclipse 开始编译Maven的Project
在Myeclipse中的操作:
a. 选中Maven Project 右击 在Run As中选择Maven clean
b. 在Myeclipse中,Project—Clean 开始编译
c. 选中Maven Project 右击 在Run As中选择Maven install
执行完这几步,如果没发生异常,会在project里生成一个target文件夹,这个文件夹里的东西,就是Maven打包发布的东西。

生命周期

编辑
Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。
clean(清理)
此生命周期旨在给工程做清理工作,它主要包含以下阶段:
pre-clean - 执行项目清理前所需要的工作。
clean - 清理上一次build项目生成的文件。
post-clean - 执行完成项目清理所需的工作.
default(默认)
validate - 验证项目是否正确且所有必要的信息都可用。
initialize - 初始化构建工作,如:设置参数,创建目录等。
generate-sources - 为包含在编译范围内的代码生成源代码.
process-sources - 处理源代码, 如过滤值.
generate-resources -
process-resources - 复制并处理资源文件,至目标目录,准备打包。
compile - 编译项目中的源代码.
process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强.
generate-test-sources - 为编译内容生成测试源代码.
process-test-sources - 处理测试源代码。
generate-test-resources -
process-test-resources - 复制并处理资源文件,至目标测试目录。
test-compile - 将需测试源代码编译到路径。一般来说,是编译/src/test/java目录下的java文件至目标输出的测试classpath目录中。
process-test-classes -
test - 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package -
package - 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test -
integration-test - 按需求将发布包部署到运行环境。
post-integration-test -
verify -
install -将包安装到本地仓库,给其他本地引用提供依赖。
deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。
site(站点)
pre-site - 执行一些生成项目站点前的准备工作。
site - 生成项目站点的文档。
post-site - 执行需完成站点生成的工作,如站点部署的准备工作。
site-deploy - 向制定的web服务器部署站点生成文件。 [2]  
Maven生命周期参考:Apache Maven Project [2]   ,书籍《Maven In Action》

Apache软件基金会

顶级项目
 ActiveMQ  Ant  Apache HTTP Server  APR
 Beehive  Camel  Cassandra  Cayenne
 Cocoon  Commons  Derby  Directory
 Excalibur  Felix  Forrest  Geronimo
 Gump  Hadoop  Harmony  HBase
 iBATIS  Jackrabbit  James  Lenya
 Lucene  Maven  mod_perl  MyFaces
 OFBiz  OpenEJB  OpenJPA  POI
 Roller  Shale  SpamAssassin  stdcxx
 Struts  Subversion  Tapestry  Tomcat
 Traffic Server  Tuscany  Velocity  Wicket
 XMLBeans      
 
其他项目
 Jakarta项目  Apache XML  Apache Incubator  
 
子项目

 BCEL  BSF  Cactus  JMeter
 Slide  Xerces  Batik  FOP
 Log4j  XAP  River  ServiceMix
 Log4Net  Abdera  Ivy  CXF
 ODE  Solr  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值