• 1. 基于Maven的项目管理 中联润通 2010.07
  • 2. 大纲Maven是什么? 在项目中使用Maven能带来什么好处? Maven的安装和使用 安装 配置文件 命令行方式介绍 Eclipse plug-in Nexus——Maven仓库管理器 在项目中使用Maven的策略
  • 3. Maven是什么?Apache Maven Project Maven是Java项目的构建和管理工具 Maven是一套项目管理框架,提供了标准的软件生命周期模型,涵盖项目的创建、构建、测试、集成和部署 Maven是一套标准,基于一个通用的软件对象模型(Project Object Model)Maven提供一系列工具(插件Plug-in),方便描述和管理项目
  • 4. 一些基本概念POM 项目描述文件,Maven管理项目的依据 Lifecycle Maven的核心,生命周期模型,稍后详述 Goal mvn的命令行参数的一种,告诉maven要用插件完成什么任务 mvn archetype:generate Plug-in Maven的大部分功能都是通过插件完成的 Maven仓库 集中存储和管理Artifact(jar) GAV GroupId,ArtifactId和Version 一个Artifact的唯一标示
  • 5. Maven的生命周期模型Maven基于生命周期模型对项目进行管理,Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,是指Maven的生命周期并不是一个整体,而是独立的三套。这三套生命周期分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作; Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等; Site Lifecycle 生成项目报告,站点,发布站点。
  • 6. 生命周期和阶段每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。 比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段,所以,mvn clean install和mvn install 是有区别的
  • 7. Clean LifecycleClean生命周期一共包含了三个阶段: pre-clean 执行一些需要在clean之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在clean之后立刻完成的工作
  • 8. Default Lifecycle绝大部分工作都发生在这个生命周期中 validate generate-sources process-sources generate-resources process-resources 复制并处理资源文件,至目标目录,准备打包。 compile 编译项目的源代码。 process-classes generate-test-sources process-test-sources generate-test-resources
  • 9. Default Lifecycle
  • 10. Site LifecycleSite生命周期包含以下阶段 pre-site 执行一些需要在生成站点文档之前完成的工作 site 生成项目的站点文档 post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 site-deploy 将生成的站点文档部署到特定的服务器上
  • 11. Maven能带来什么好处?用Maven可以方便的创建项目,基于archetype可以创建多种类型的java项目 Maven仓库对jar包(artifact)进行统一管理,避免jar文件的重复拷贝和版本冲突 团队开发,Maven管理项目的RELEASE和SNAPSHOT版本,方便多模块(Module)项目的各个模块之间的快速集成 Maven能够自动生成项目站点,方便项目沟通
  • 12. Maven的安装Maven的安装很简单,下载解压之后只需设置环境变量,就算安装成功了。 下载地址http://maven.apache.org/download.html 如果我们把maven解压到d:\maven-2.2.1,那么添加环境变量M2_HOME=d:\maven-2.2.1,并向Path中添加%M2_HOME%\bin 打开cmd 运行mvn –version可以查看版本号 从%M2_HOME%\conf中复制settings.xml到user目录下建立自己的配置文件,winXP系统下为”c:\documents and settings\all users\[username]\.m2”win7为”c:\users\[username]\.m2” MyEclipse 8.5集成了Maven环境,推荐将解压安装的Maven配置到MyEclipse 8.5中并启用
  • 13. Maven的安装
  • 14. Maven的配置文件-Settings.xmlSettings.xml %M2_HOME%\conf\settings.xml称为Global Settings(即全局配置) %USERHOME%\.m2\settings.xml(手动创建)称为User Settings ,User Settings继承Global Settings,并不是必须的。
  • 15. Maven的配置文件-Settings.xmlsettings.xml的基本结构如下 详细说明可参见 http://www.javaeye.com/topic/41612
  • 16. Maven的配置文件- POM
  • 17. Maven的配置文件- POM项目中的pom.xml用来描述项目 parent 如果存在上一级父项目的话,给出父项目的位置。如果没有特别指出的话,值就是父项目,对于当前项目而言。其内容是一个groupId,artifactId和version元素的组合。 modelVersion 描述这个POM文件遵从哪个版本的项目描述符。 groupId 针对一个项目的普遍唯一识别符。通常用一个完全正确的包的名字来与其他项目的类似名字来进行区分(比如:org.apache.maven) artifactId 在给定groupId 的group里面为artifact指定的标识符,是唯一的。artifact代表的是被制作或者被一个project应用的组件。对于Maven项目的artifact 的例子包括:一些JARs,源代码以及二进制的发布以及WARs. packaging 这个项目生产出来的artifact 类型,举个例子jar, war, pom, swf, plugins能够创建他们自己的包,包括包的类型,所以这个列表不可能包含所有可能的类型 name 当前项目的全称 version 当前项目产生的artifact的当前版本
  • 18. Maven的配置文件- POMdescription 当前项目的一个细节描述,当需要描述这个项目的时候被Maven所用,比如在web 站点中。 这个元素能够被指定为CDATA类型,允许使用HTML的tags,并不鼓励用空白文本来表示。 url 当前项目的主页的URL prerequisites 描述当前项目的编译环境的先决条件 issueManagement 当前项目的发布管理信息。 ciManagement 当前项目的连续集成信息。 inceptionYear 当前项目开始的年份, 用4位数字描述。 涉及到介绍情况时用作提供版权信息 mailingLists 包含的信息包括邮件列表 developers 描述当前的项目的开发人员的信息 contributors 描述对当前项目有贡献的人员的信息,不特指开发人员
  • 19. Maven的坐标(Coordinates)
  • 20. 命令行方式使用Maven本地Maven环境搭建成功后,就可以通过命令行方式使用Maven了,下面演示通过命令行创建项目,并导入Eclipse. mvn archetype:create -DgroupId=com.cops -DartifactId=myDemo -Dversion=0.1-SNAPSHOT cd myDemo mvn eclipse:eclipse –DdownloadSource=true 在eclipse中导入Maven Project就可以了
  • 21. Maven常用命令编译 mvn compile 打包 mvn package 测试 mvn test 部署(本地) mvn install 部署(远程) mvn deploy 生成site mvn site 清除 mvn clean
  • 22. MyEclipse中启用Maven
  • 23. 设置Maven
  • 24. 添加用户Settings.xml
  • 25. 创建Maven项目指定Source和 Web root folder 并且添加将Add Maven Support 选中
  • 26. 创建Maven项目输入GAV和其他信息 这些信息会被写入POM
  • 27. 多模块项目
  • 28. Maven的目录结构
  • 29. Nexus: Maven仓库管理器Maven通过中央仓库(central)来管理构件,全世界只有一个中央仓库,它有很多镜像(mirro) Nexus以web-app的形式提供本地化的Maven仓库管理服务。 配置本地Maven使用Nexus仓库,以提高效率
  • 30. Nexus: Maven仓库管理器Maven centralMaven clientMaven clientMaven clientNexusMaven clientMaven clientMaven clientMaven centralMaven clientMaven clientNexus
  • 31. Nexus 安装和配置下载Nexus 1.5.0 war http://nexus.sonatype.org/download-nexus.html 在tomcat中发布 访问http://localhost:8080/nexus-webapp-1.5.0/即可查询Maven 构件 以默认管理账户admin/admin123登录后可进行仓库管理 参见http://juvenshun.javaeye.com/blog/349534
  • 32. 本地使用Maven向Maven Global Settings添加如下代码 dev local-nexus http://127.0.0.1:8080/nexus-webapp-1.5.0/content/groups/public/ true true dev
  • 33. 部署mvn deploy 向项目pom添加代码 nexus-releases Nexus Release Repository http://127.0.0.1:8080/nexus-webapp-1.5.0/content/repositories/releases/ nexus-snapshots Nexus Snapshot Repository http://127.0.0.1:8080/nexus-webapp-1.5.0/content/repositories/snapshots/
  • 34. 部署向user settings添加代码 nexus-releases admin admin123 nexus-snapshots admin admin123
  • 35. 参考资源Maven权威指南 http://www.sonatype.com/books/maven-book/reference_zh/public-book.html Maven中文Blog http://juvenshun.javaeye.com/
  • 36. 结束 谢谢! Email:lingbing.zheng@china-ops.com