今天给大家介绍一个项目管理和综合工具:Maven

Maven:

maven读作 ['meivin],本意是指可以被信任的领域专家,致力于传播知识(来自于http://en.wikipedia.org/wiki/Maven)。

Maven是一个跨平台的项目管理工具。来源于Apache的开源项目。主要服务于基于Java平台的项目构建依赖管理项目信息管理

Maven是一款优秀的构建工具

我们一直在不停地需找避免重复的方法。设计的重复、编码的重复、文档的重复,当然还有构建的重复。Maven最大化的消除了构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件,我们不需要定义过程,甚至不需要再去实现这些过程中的一些任务。

Maven不仅仅是构建工具

maven不仅是构建工具,还是一个依赖管理工具和项目管理工具。

依赖管理

几乎任何Java应用都会借用一些第三方的开源类库,这些类库通过依赖的方式引入进项目。随着依赖的增多,版本不一致、版本冲突、依赖臃肿等问题会接踵而来。Maven提供了一个优秀的解决方案,通过坐标系统精确定位每一个构件(artifact)。

项目信息管理

maven把分散在各处的项目信息,包括项目描述、开发者列表、版本控制地址、许可证、缺陷管理系统地址等集中起来。Maven可以把这些信息生成 一个站点,用于开源项目的发布。通过一些插件,我们还可以轻松的获得项目文档、测试报告、静态分析报告、源码版本日志报告等有价值的项目信息。

中央仓库

maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行开源类库。通过一些衍生搜索工具,确定类库坐标后,Maven会帮我们自动下载构建,省去手工劳动。

约定优于配置

Maven约定了项目目录结构、测试用例命名方法等内容。只要遵循这些成熟的规则,用户在项目间切换的时候救免去了额外的学习成本。

为什么选Maven

Maven不是Java领域的唯一解决方案,还有IDE,Ant等。

IDE不是万能的

像Eclipse这类优秀的IDE大大的提高了开发效率,几乎覆盖开发需要的全部功能,包括代码编辑、调试、重构、编译。然而IDE还是有不足的地方

IDE依赖大量的手工操作。

IDE存在差异性,每个开发者都有自己个个性化配置。

Ant

Ant可以看成一个Java版本的Make,也是一款非常优秀的构建工具。最早用于构建著名的Tomcat项目。但是Ant和Maven显著的区别 是,Ant是过程式的,Maven是声明式的。Ant可以理解为一种由xml定义的可扩展脚本语言。Ant脚本可以省去重复的劳动,Maven做得更绝, 可以省去劳动。

Ant最大的缺陷是没有依赖管理,需要借助Ivy来解决依赖管理。通过Ivy,Ant可以依赖Maven仓库里的构件,但是不了Maven原生实现的那么方便,特别是对于依赖范围的处理。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

首先,为什么有maven?构建是程序员每天要做的工作,而且相当长的时间花在了这上面,而maven使这系列的工作完全自动化。 我们一直在寻找避免重复的方法,设计的重复,文档的重复,编码的重复,构建的重复等,maven是跨平台的,最大的消除了构建的重复。

maven的其他优势:

1. maven不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。

2.为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题,它通过一个坐标系统来精确地定位每一个构件(artifact)。

3.还能帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表,版本控制系统,许可证,缺陷管理系统地址。

4.maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件。通过衍生工具(Nexus),我们还能对其进行快速搜索

5.maven对于目录结构有要求,约定优于配置,用户在项目间切换就省去了学习成本。

Maven的特点:项目构建,依赖管理

1、一旦服务器上安装maven,其中包含的repo资源库可以在任意工程中共享。Maven对所依赖的包有明确的定义,如使用那个包,版本是多少

2、依赖库下载自动化。打开一个工程中Pom.xml,其中的dependency项中的groupID子项只要编写好就可实现自动下载。Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。

3、外部jar包安装只需maven install--命令行实现,也可通过插件完成 打jar包也可直接使用命令行形式,也可通过插件完成。

下载及安装:

1.下载最新版 Maven

下载地址 http://maven.apache.org/download.cgi

2.解压下载的压缩包

3.配置环境变量

配置环境变量(需要先配置好%JAVA_HOME%环境变量): 其他配置(后面讲到):settings.xml。

%MAVEN_HOME%/conf目录下的settings.xml,该配置文件针对系统所有用户:

4、查看是否配置成功

目录结构:

  • src/main/java-存放项目.java文件
  • src/main/resources-存放项目资源文件
  • src/test/java-存放测试类.java文件
  • src/test/resources-存放测试资源文件
  • target - 项目输出目录
  • pom.xml - Maven核心文件

MyEclipse提供了Maven4MyEclipse插件,已经内置安装了Maven;但我们通常使用自己下载配置的Maven,在Installations选项中添加我们刚才下载配置的Maven

新建一个 Maven Project:

选择 workbench Location :

选择 Maven Archetype(项目骨架),这里我们选择 maven-archetype-webapp 

设置 Maven 相关参数,Group IdArtifact IdVersionPackage。它们共同组成 Maven 的坐标

这里的groupId一般命名规范沿袭java包命名规范 

 

项目创建成功之后,我们看到 MyEclipse 默认只为我们创建了 src/main/resources,打开项目属性 - Java Build Path,打开 Libraries,编辑 JRE 环境,选择自己安装的JDK 

这时,添加src/main/java

设置 Project Facets。选择 Java 1.7 版本和 Dynamic Web Module 3.0 版本

设置部署打包结构如下

打开pom.xml文件,我们看到Maven已经为我们添加了JUnit3.8.1的依赖,这里我们改成 JUnit 4.11,同时添加 Servlet-api 的依赖包

Maven已经提供大量相关jar包引用地址,但是有些jar包找不到,例如: com.springsource.net.sf.cglib-2.2.0.jar,

在maven默认的官方库(http://repo.maven.apache.org/maven2 )没有找到此jar,但是在http://repository.sonatype.org/content/groups/public/ 这个库中有这个jar,因此在MyEclipse中添加这个库即可。

在maven默认的官方库(http://repo.maven.apache.org/maven2 )没有找到此jar,但是在http://repository.sonatype.org/content/groups/public/ 这个库中有这个jar,因此在eclipse中添加这个库即可,如下:

如果有些jar包不确定GroupId,下载地址,可以在该网站下查询:http://mvnrepository.com/

好了,Maven的初步介绍就先告一段落,下次我们继续分享如何使用Maven搭建目前最流行的SSM框架。

Maven项目搭建(一):Maven初体验的更多相关文章

  1. 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建

    从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...

  2. maven项目搭建步骤

    maven项目搭建步骤 班级:软件151           姓名:黄于霞 一.准备以下压缩包 1.JDK1.7 文件:jdk1.7.rar 2. eclipse-jee-mars-2 文件:32位系 ...

  3. [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目

    [Eclipse的Maven项目搭建,仅为测试Maven功能]如何在Eclipse下搭建Maven项目   你可能需要了解以下才能更好的阅读以下: 在 Windows 中配置Maven: http:/ ...

  4. maven项目搭建

    一.Maven简介 Maven是基于Java平台的项目构建(mvn clean install).依赖管理(中央仓库,Nexus)和项目信息管理的项目管理工具. Maven是基于项目对象模型(POM) ...

  5. freemarker + spring mvc + spring + mybatis + mysql + maven项目搭建

    今天说说搭建项目,使用freemarker + spring mvc + spring + mybatis + mysql + maven搭建web项目. 先假设您已经配置好eclipse的maven ...

  6. Maven项目搭建(二):Maven搭建SSM框架

    上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...

  7. Maven项目搭建(三):Maven直接部署项目

    上一章给大家讲解了如何使用Maven搭建SSM框架项目.   这次给大家介绍一下怎么使用Maven直接部署项目.   Maven直接部署项目  1.新建系统变量CATALINA_HOME,值为:Tom ...

  8. Maven项目搭建-Eclipse版

    一.Maven简单介绍 Maven是基于Java平台的项目构建(mvn clean install).依赖管理(中央仓库,Nexus)和项目信息管理的项目管理工具. Maven是基于项目对象模型(PO ...

  9. 解决:springmvc maven 项目搭建完后没有src目录,而且maven导入很慢

    前言:在搭建springmvc maven项目中遇到的问题做总结,比如搭建后没有src,同时这里也解决了搭建后maven导入很慢的问题. 问题: 1.发现创建出来的maven项目没有src文件 ,而且 ...

随机推荐

  1. Dubbo源码学习--集群负载均衡算法的实现

    相关文章: Dubbo源码学习文章目录 前言 Dubbo 的定位是分布式服务框架,为了避免单点压力过大,服务的提供者通常部署多台,如何从服务提供者集群中选取一个进行调用, 就依赖Dubbo的负载均衡策 ...

  2. C++ cout 输出小数点后指定位数

    在C中我们可以使用 printf("%.2lf",a);但在C++中是没有格式操作符的,该如何操作: C++使用setprecision()函数,同时必须包含头文件iomanip, ...

  3. DB2 表空间监控

    默认DB2 缓冲池信息监控是OFF, 需要开启(DB2表空间是由缓冲池分配的) CollBufferpool : ============ The CollBufferpool collector c ...

  4. Color.js 增强你对颜色的控制

    Color.js是一个能加强前端开发中对颜色处理的第三方库. 假设你已经基本了解色彩通道.色彩空间.色相.饱和度.亮度.不透明度等概念.当然了,毕竟前端算是半只脚踏进设计领域了,相信这些概念难不到你. ...

  5. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  6. GridControl基础设置(一)

    1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...

  7. 快速记录 IE8 下三个问题

    快速记录 IE8 下三个问题 昨天 pc 端网站上灰度,发现多个在 IE8 下的问题,描述和解决方案如下: 第一个问题是 css 文件过大 现象 把项目所有的 css 打包成单个文件,在现代的浏览器下 ...

  8. 字符串查找算法总结(暴力匹配、KMP 算法、Boyer-Moore 算法和 Sunday 算法)

    字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置. KMP 算法,全称是 Knuth-Mo ...

  9. intellij idea 常用快捷键mac版

    login.jsp文件中的html标签都是大写格式的,看着很不舒服,就改了一下,全部用的快捷键修改成小写的,也因此整理了一下常用的快捷键. shift + Command + u 大小写转换. alt ...

  10. 局域网里连接mysql服务器,其他人连接自己的mysql服务器

    应用场景:  自己在自己的机器上开发网站,同事也要和我一起开发,就两个人,我自己的机器当做服务器,让他直接连我的数据库,看我的项目就行了,并且用svn进行开发,相当不错 问题: 怎样在局域网里,其他人 ...