Maven使用详解

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!’

posted @ 2015-03-26 21:11  SolidMango  阅读(9142)  评论(6编辑  收藏  举报