Maven项目搭建(一):Maven初体验

今天给你们介绍一个项目管理和综合工具:Mavenjava

Maven:程序员

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

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

Maven是一款优秀的构建工具apache

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

Maven不只仅是构建工具服务器

maven不只是构建工具,仍是一个依赖管理工具和项目管理工具。app

依赖管理框架

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

项目信息管理

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的特色:项目构建,依赖管理 

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

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

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

下载及安装:

1.下载最新版 Maven

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

2.解压下载的压缩包

3.配置环境变量

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

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

四、查看是否配置成功

 

目录结构:

  • 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框架。

相关文章
相关标签/搜索