maven详解

1.maven是什么

Maven这个单词来自于意第绪语,意为知识的积。是apache maven project

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。因为ant不能很好的满足开发人员的需求(很难发现项目的相关性信息和其它元信息)。

maven是一套项目管理框架,提供标准的软件测试生命周期模型,涵盖了项目的创建、构建、测试、集成和部署。它是一套标准,给予通用的项目对象模型(project object model),提供了一系列的插件工具,方便描述和管理项目。

2.一些基本概念

pom:项目描述文件,maven管理项目的依据

lifecycle:maven的核心,生命周期模型

goal:mvn的命令行参数,告诉maven要用揑件完成什么任务   mvnarchetype:generate

Maven仓库
集中存储和管理Artifact(jar)

GAV
GroupId,ArtifactId和Version 一个Artifact的唯一标示



Maven基于生命周期模型对项目进行管理,Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,是指Maven的生命周期幵丌是一个整体,而是独立的三套。这三套生命周期分别是:

Clean Lifecycle 在进行真正的构建之前进行一些清理工作;
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等;
Site Lifecycle 生成项目报告,站点,发布站点。

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。
比如,运行mvnclean ,这个的clean是Clean生命周期的一个阶段,所以,mvnclean install和mvninstall 是有区别的

1、clean life:

Clean生命周期一共包含了三个阶段:
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作

2、default life

绝大部分工作都发生在这个生命周期中
validate
generate-sources
process-sources
generate-resources
process-resources 复制幵处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes
generate-test-sources
process-test-sources
generate-test-resources


3、site生命周期:

Site生命周期包含以下阶段
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,幵且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上


maven做什么

1.创建项目:给予archetype创建多种类型的java项目(根据模板生成)

2,冲突:maven仓库对jar(artifact)进行统一管理,避免jar文件的重复拷贝和版本冲突。

3.团队开发,Maven管理项目的RELEASE和SNAPSHOT版本,方便多模块(Module)项目的各个模块之间的快速集成

4、Maven能够自劢生成项目站点,方便项目沟通


Maven的配置文件-POM:

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的当前版本



description当前项目的一个细节描述,当需要描述这个项目的时候被Maven所用,比如在web 站点中。这个元素能够被指定为CDATA类型,允许使用HTML的tags,幵丌鼓励用空白文本来表示。
url当前项目的主页的URL
prerequisites描述当前项目的编译环境的先决条件
issueManagement当前项目的发布管理信息。
ciManagement当前项目的连续集成信息。
inceptionYear当前项目开始的年份,用4位数字描述。涉及到介绍情冴时用作提供版权信息
mailingLists包含的信息包括邮件列表
developers描述当前的项目的开发人员的信息
contributors描述对当前项目有贡献的人员的信息,丌特指开发人员




本地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就可以了


Nexus: Maven仓库管理器

Maven通过中央仓库(central)来管理构件,全世界只有一个中央仓库,它有很多镜像(mirro),Nexus以web-app的形式提供本地化的Maven仓库管理服务,配置本地Maven使用Nexus仓库,以提高效率

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


本地使用Maven

向Maven Global Settings添加如下代码:

<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>local-nexus</id>
<url>http://127.0.0.1:8080/nexus-webapp-1.5.0/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

部署

向项目pom.xml添加代码如下:

<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8080/nexus-webapp-1.5.0/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8080/nexus-webapp-1.5.0/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>


想user setting添加代码:

<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值