Maven使用详解

世间万物相生相克,今年本来的目标是主要研究asp.net mvc以及windows平台相关的DI, ORM框架,突然有一天想研究一个Java EE里面相应的框架都是怎么玩的,于是研究了一下spring,后来发现spring相关的项目中,一般会使用主流的另一个框架,就是maven,相面我们从几个方面简单介绍一个这个框架,并附上详细的使用步骤,希望这篇文章可以完全自包含,可以完整的引导初学者使用maven。

Maven是干什么用的

Maven 其实是很多东西,Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

但是简而言之,maven是把设计模式应用于构建架构的一种尝试,如下列出了maven 的大部分功能。

-Builds

-Documentation

-Reporting

-Dependencies

-SCMs

-Releases

-Distribution.

另外相对于以前的Java构建工具ant, maven更简洁,因为maven是基于约定的,就是说约定好的东西就不用配置了。Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务

Maven的配置和基本使用

去官网下载maven安装包,就像其他Java一样,是一个绿色的包,下载后直接解压并配置bin到path环境变量,就可以直接使用。由于maven使用Java所以测试前请检查好JAVA_HOME已经配置到相应的Java安装目录,开启控制台键入mvn –version会得到如下的结果表示配置成功。

-------------------------------------------------------------------

C:\Users\Dbg>mvn -version

Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-1

7+08:00)

Maven home: C:\apache-maven-3.3.1\bin\..

Java version: 1.7.0_25, vendor: Oracle Corporation

Java home: C:\Program Files\Java\jre7

Default locale: zh_CN, platform encoding: GBK

OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

-------------------------------------------------------------------

创建第一个工程

C:\Users\Dbg>mvn -B archetype:generate   -DarchetypeGroupId=org.apache.maven.archetypes   -DgroupId=com.mycompany.app   -DartifactId=my-app

创建成功后会得到如下的目录结构

my-app

|-- pom.xml

`-- src

|-- main

|   `-- java

|       `-- com

|           `-- mycompany

|               `-- app

|                   `-- App.java

`-- test

`-- java

`-- com

`-- mycompany

`-- app

`-- AppTest.java

切换到my-app所在的目录,执行如下命令编译整个项目

C:\Users\Dbg>mvn compile

结果如下:

[INFO] ----------------------------------------------------------------------------

[INFO] Building Maven Quick Start Archetype

[INFO]    task-segment: [compile]

[INFO] ----------------------------------------------------------------------------

[INFO] artifact org.apache.maven.plugins:maven-resources-plugin: \

checking for updates from central

[INFO] artifact org.apache.maven.plugins:maven-compiler-plugin: \

checking for updates from central

[INFO] [resources:resources]

[INFO] [compiler:compile]

Compiling 1 source file to <dir>/my-app/target/classes

[INFO] ----------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ----------------------------------------------------------------------------

[INFO] Total time: 3 minutes 54 seconds

[INFO] Finished at: Fri Sep 23 15:48:34 GMT-05:00 2005

[INFO] Final Memory: 2M/6M

[INFO] ----------------------------------------------------------------------------

编译并运行unit test 代码

C:\Users\Dbg>mvn test

[INFO] ----------------------------------------------------------------------------

[INFO] Building Maven Quick Start Archetype

[INFO]    task-segment: [test]

[INFO] ----------------------------------------------------------------------------

[INFO] artifact org.apache.maven.plugins:maven-surefire-plugin: \

checking for updates from central

[INFO] [resources:resources]

[INFO] [compiler:compile]

[INFO] Nothing to compile - all classes are up to date

[INFO] [resources:testResources]

[INFO] [compiler:testCompile]

Compiling 1 source file to C:\Test\Maven2\test\my-app\target\test-classes

[INFO] [surefire:test]

[INFO] Setting reports dir: C:\Test\Maven2\test\my-app\target/surefire-reports

-------------------------------------------------------

T E S T S

-------------------------------------------------------

[surefire] Running com.mycompany.app.AppTest

[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0 sec

Results :

[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] ----------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ----------------------------------------------------------------------------

[INFO] Total time: 15 seconds

[INFO] Finished at: Thu Oct 06 08:12:17 MDT 2005

[INFO] Final Memory: 2M/8M

[INFO] ----------------------------------------------------------------------------

执行示例代码

C:\Users\Dbg>mvn exec:java -Dexec.mainClass="com.mycompany.app.App"

会输出’hello world!’

Maven使用详解的更多相关文章

  1. eclipse里面构建maven项目详解(转载)

    本文来源于:http://my.oschina.net/u/1540325/blog/548530 eclipse里面构建maven项目详解 1       环境安装及分配 Maven是基于项目对象模 ...

  2. elasticSearch+spring 整合 maven依赖详解

    摘自:http://www.mayou18.com/detail/nTxPQSyu.html [Elasticsearch基础]elasticSearch+spring 整合 maven依赖详解 Ma ...

  3. maven package exec 及 maven 配置文件详解

    maven package test包下执行test 的配置文件 生成target目录,编译.测试代码,生成测试报告,生成jar/war文件 maven 配置文件详解 http://blog.csdn ...

  4. (十)Maven依赖详解

    1.何为依赖? 比如你是个男的,你要生孩子,呸呸呸...男的怎么生孩子,所以你得依赖你老婆,不过也不一定咯,你也可以依赖其她妹子. 我们在平时的项目开发中也是同理,你需要依赖一些东西才能实现相应的功能 ...

  5. maven配置详解

    什么是pom?     pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...

  6. Maven使用详解,非常详细

    本文转:http://blog.csdn.net/u010425776/article/details/52027706 什么是Maven? 如今我们构建一个项目需要用到很多第三方的类库,如写一个使用 ...

  7. Maven 教程(10)— Maven依赖详解

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79545022 1.何为依赖? 比如你是个男的,你要生孩子,呸呸呸…男的怎么生孩子 ...

  8. maven搭建详解

    1, 下载   官方下载地址: maven_download, 最新版 apache-maven-3.0.5-bin.tar.gz   官方地址: maven   2, 解压   tar zxvf a ...

  9. Maven入门详解

    什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...

随机推荐

  1. chardet坑——比蜗牛还慢

    需求 最近在做一个功能,使用python爬取网页然后保存到本地.其中遇到的一个难题是判断页面的编码方式.有问题就百度喽,当时我没想到自己去解决.一百度就找到了一个叫chardet的插件.大喜过望,试了 ...

  2. Asp.net MVC4 与 Web Form 并存

          Web Forms 与 MVC 的asp.net 基础架构是相同的.MVC 的路由机制并不只MVC 特有的,它与WebForm 也是共享相同的路由机制.Web Forms 的Http请求针 ...

  3. node.js问题二

    看了Node.js开发指南发现routes和app.js分开的话要使用下面代码 app.use(express.router(routes)) 但是真正是使用上面代码会遇到无数的问题报错 找了资料才发 ...

  4. 打开mysql时,提示 1040,Too many connections

    打开mysql时,提示 1040,Too many connections,这样就无法打开数据库,看不了表里边的内容了. 出现这个问题的原因是,同时对数据库的连接数过大,mysql默认的最大连接数是1 ...

  5. Javascript图表插件HighCharts用法案例

    最近还在忙着基于ABP的项目,但本篇博客和ABP无关,喜欢ABP框架的朋友请点击传送门. 这不,最近项目基本功能做的差不多了,现在在做一个数据统计的功能,需要绘制区域图(或折线图)和饼图.一开始,楼主 ...

  6. ENode 1.0 - Command Service设计思路

    开源地址:https://github.com/tangxuehua/enode 上一篇文章,介绍了enode框架的物理部署思路.本文我们再简单分析一下Command Service的API设计: C ...

  7. dojo/dom-geometry元素大小

    在进入源码分析前,我们先来点基础知识.下面这张图画的是元素的盒式模型,这个没有兼容性问题,有问题的是元素的宽高怎么算.以宽度为例,ff中 元素宽度=content宽度,而在ie中 元素宽度=conte ...

  8. 实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  9. 使用aggregate在MongoDB中查找重复的数据记录

    我们知道,MongoDB属于文档型数据库,其存储的文档类型都是JSON对象.正是由于这一特性,我们在Node.js中会经常使用MongoDB进行数据的存取.但由于Node.js是异步执行的,这就导致我 ...

  10. P,NP,NP_hard,NP_complete问题定义

    背景:在看李航的<统计学习方法时>提到了NP完全问题,于是摆之. 问题解答:以下是让我豁然开朗的解答的摘抄: 最简单的解释:P:算起来很快的问题NP:算起来不一定快,但对于任何答案我们都可 ...