250 likes | 525 Views
基于 Maven 的项目管理. 陈鹏 飞 2011-11-06. 1. 2. 3. 4. What we do NOW. What is Maven. How Maven do it. How to use maven. Contents. What we do NOW. Search the lib jars…. |-- src | |--org | |-- xhme | |--bean | |--service | |-- dao
E N D
基于Maven的项目管理 陈鹏飞 2011-11-06
1 2 3 4 What we do NOW What is Maven How Maven do it How to use maven Contents
What we do NOW Search the lib jars… |--src | |--org | |--xhme | |--bean | |--service | |--dao | |--struts.xml | |--log4j.properties |--WebRoot | |--WEB-INF | |--lib | |--…….jar | |--web.xml | |--img | |--js | |--css | |--index.jsp Which to choice? How about update? How about test?
The Dependency of Struts The following is a list of compile dependencies for struts2 project. These dependencies are required to compile and run the application:
What is Maven • Apache Maven Project • Maven是Java项目的构建与管理工具 • Maven是一套项目管理框架,提供标准的软件生命周期模型,涵盖项目的创建、构建、测试、集成、部署 • Maven是一套标准,基于一个通用的软件对象模型(Project Object Model) • Maven提供一系列工具(插件Pluin),方便描述和管理项目
Why we choice Maven • 用Maven可以方便的创建项目,基于archetype可以创建多种类型的Java项目 • Maven仓库对jar包(artifact)进行统一管理,避免jar的重复拷贝和版本冲突 • 团队开发,Maven管理项目的RELEASE和SNAPSHOT版本,方便多模块(Module)项目的各个模块之间的快速集成 • Maven能够自动生s成项目站点,方便项目沟通
How Maven do it • pom.xml • 项目描述文件,Maven管理项目的依据 • Lifecycle • Goal • mvn的命令行参数的一种,告诉maven要用插件完成什么任 • mvnarchetype:generate • Plug-in • Maven的大部分功能都是通过插件完成的 • Maven仓库 • 集中存储和管理Artifact(jar) • GAV • GroupId,ArtifactId和Version一个Artifact的唯一标示
Lifecycle • Maven基于生命周期模型对项目进行管理 • Clean Lifecycle • 在进行真正的构建之前进行一些清理工作 • mvn clean • Default Lifecycle • 构建的核心部分,编译,测试,打包,部署等等 • mven compile • Site Lifecycle • 生成项目报告,站点,发布站点 • mvn site
Clean Lifecycle • pre-clean • 执行一些需要在clean之前完成的工作 • Clean • 移除所有上一次构建生成的文件 • post-clean • 执行一些需要在clean之后立刻完成的工作
Default Lifecycle • validate • generate-sources • process-sources • generate-resources • process-resources • 复制并处理资源文件,至目标目录,准备打包 • compile • 编译项目的源代码 • process-classes • generate-test-sources • process-test-sources • generate-test-resources
Site Lifecycle • pre-site • 执行一些需要在生成站点文档之前完成的工 • site • 生成项目的站点文档 • post-site • 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 • site-deploy • 将生成的站点文档部署到特定的服务器上
How to use maven • Install • 下载地址http://maven.apache.org/download.html • 解压至某个目录 • 设置环境变量 • Windows • 添加环境变量 M2_HOME=d:\maven-3.0.3 • 在Path中添加%M2_HOME%\bin • Linux • export M2_HOME=/usr/mbin/maven • export PATH=$PATH:$M2_HOME/bin • 测试 • mvn–version
How to use maven • Configuration • settings.xml • %M2_HOME%\conf\settings.xml • Global Settings(即全局配置) • %USERHOME%\.m2\settings.xml • User Settings 继承Global Settings(非必须) • repository • <localRepository>.m2/repository</localRepository> • mirrors
How to use maven • POM • 项目中的pom.xml用来描述项目 • parent • 如果存在上一级父项目的话,给出父项目的位置。如果没有特别指出的话,值就是父项目,对于当前项目而言。其内容是一个groupId,artifactId和version元素的组合。 • modelVersion • 描述这个POM文件遵从哪个版本的项目描述符。 • groupId • 针对一个项目的普遍唯一识别符。通常用一个完全正确的包的名字来与其他项目的类似名字来进行区分 比如:org.xhome
How to use maven • POM • artifactId • 在给定groupId的group里面为artifact指定的标识符,是唯一的。artifact代表的是被制作或者被一个project应用的组件。对于Maven项目的artifact的例子包括:一些JARs,源代码以及二进制的发布以及WARs • packaging • 这个项目生产出来的artifact类型,如jar, war • plugins • 能够创建他们自己的包,包括包的类型,所以这个列表不可能包含所有可能的类型
How to use maven • POM • name • 当前项目的全称 • version • 当前项目产生的artifact的当前版本 • description • 当前项目的一个细节描述,当需要描述这个项目的时候被Maven所用,比如在web站点中。 这个元素能够被指定为CDATA类型,允许使用HTML的tags,并不鼓励用空白文本来表示。 • url当前项目的主页的URL
How to use maven • POM • prerequisites描述当前项目的编译环境的先决条件 • issueManagement当前项目的发布管理信息。 • ciManagement当前项目的连续集成信息。 • inceptionYear当前项目开始的年份, 用4位数字描述。 涉及到介绍情况时用作提供版权信息 • mailingLists包含的信息包括邮件列表 • developers描述当前的项目的开发人员的信息 • contributors描述对当前项目有贡献的人员的信息,不特指开发人员
How to use maven • Maven常用命令 • 创建项目 • mvnarchetype:create -DgroupId=org.xhome -DartifactId=Demo -Dversion=0.1-SNAPSHOT • 将Maven项目导入eclipse • mvneclipse:eclipse –DdownloadSource=true • 编译 • mvn compile • 运行 • mvn run • mvnjetty:run
How to use maven • Maven常用命令 • 测试 • mvn test • 部署 • mvninstall (本地) • mvndeploy (远程) • 生产site • mvn site • 清理 • mvn clean
How to use maven • Demo • <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> <groupId>org.xhome</groupId> <artifactId>demo</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Demo</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>
How to use maven |--src | |--main | |--java | |--org | |--xhome | |--bean | |--action | |--dao | |--resources | |--struts.xml | |-- log4j.properties | |--webapp | |--WEB-INF | |--web.xml | |--js | |--index.jsp | |--test |--pom.xml
How to use maven • M2Eclipse
How to use maven • Nexus: Maven仓库管理器 • Maven通过中央仓库(central)来管理构件,全世界只有一个中央仓库,它有很多镜像( mirro ) • Nexus以web-app的形式提供本地化的Maven仓库管理服务 • 配置本地Maven使用Nexus仓库,以提高效率
How to use maven • 参考资源 • Maven权威指南 • Maven实战