求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
Maven教程初级篇
 
作者 蓝锋博客,火龙果软件    发布于 2013-10-28
 

1. Maven的出发点

在进行软件开发的过程中,无论什么项目,采用何种技术,使用何种编程语言,我们都要重复相同的开发步骤:编码,测试,打包,发布,文档。实际上这些步骤是完全重复性的工作。那为什么让软件开发人员去重复这些工作?开发人员的主要任务应该是关注商业逻辑并去实现它,而不是把时间浪费在学习如何在不同的环境中去打包,发布,。。。

Maven正是为了将开发人员从这些任务中解脱出来而诞生的。

2. Maven能做什么?

Maven是由早期为Jakarta Turbine定制的构建工具发展而来的,现在成为了一个独立的软件项目管理工具。Maven能够:

1)理解并管理整个软件开发周期,重用标准的构建过程,比如:编译,测试,打包等。同时Maven还可以通过相应的元数据,重用构建逻辑到一个项目。

2)Maven负责整个项目的构建过程。开发人员只需要描述项目基本信息在一个配置文件中:pom.xml。也就是说,Maven的使用者只需要回答“What”而不是“How”。

3. Maven并不只是一个构建工具,她还可以提供:

1)声明式依赖性管理

2)集中的组件库管理

3)文档的自动生成

4)报告的自动生成

4. Maven设计原则

1)Convention Over Configuration (约定优于配置)。在现实生活中,有很多常识性的东西,地球人都知道。比如说:如何过马路(红灯停绿灯行),如何开门,关门等。对于这些事情,人们已经有了默认的约定。

在软件开发过程中,道理也是类似的,如果我们事先约定好所有项目的目录结构,标准开发过程(编译,测试,。。。),所有人都遵循这个约定。软件项目的管理就会变得简单很多。在现在流行的很多框架中,都使用了这个概念,比如EJB3和Ruby on Rails。在Maven中默认的目录结构如下:

由上图可以看出以下几个标准的Maven目录:

src:源代码目录。所有的源代码都被放在了这个目录下。在这个目录下又包括了:

1) main:所有的源代码放在这里。对于Java项目,还有一个下级子目录:java. 对于Flex项目则是flex,。。。

2) test:所有的单元测试类放在这里。

target:所有编译过的类文件以及生成的打包文件(.jar, .war, ...)放在这里。

2)Reuse Build Logic (重用构建逻辑):Maven把构建逻辑封装到插件中来达到重用的目的。这样在Maven就有用于编译的插件,单元测试的插件,打包的插件,。。。Maven可以被理解成管理这些插件的框架。

3)Declarative Execution (声明式执行):Maven中所有的插件都是通过在POM中声明来定义的。Maven会理解所有在POM中的声明,并执行相应的插件。

5. 创建一个Maven项目

1) 下载Maven:http://maven.apache.org/

2) 解压缩下载的zip文件到本地目录下,比如:D:\Maven

3) 添加D:\Maven\bin到环境变量PATH中

4) 在命令行下运行:

mvn -version 或者 mvn -v

你应该看到如下图所示的Maven版本号:

5) 运行如下命令创建一个Maven项目:

mvn archetype:create -DgroupId=net.jianxi.tutorials
                                    -DartifactId=helloworld
                                    -DpackageName=net.jianxi.tutorials

该项目的目录结构如下图所示:

现在就可以运行一些Maven命令了

编译: mvn compile

单元测试: mvn test

构建并打包: mvn package

清理: mvn clean

分类: Maven

1. 创建项目并更改项目基本配置信息

在命令行下运行如下命令创建一个项目:

mvn archetype:create -DgroupId=net.jianxi.tutorials     
        -DartifactId=numopers 
    -DpackageName=net.jianxi.tutorials 
    -Dversion=1.0

进入到numopers目录,打开pom.xml,该文件内容如下:

4.0.0net.jianxi.tutorials
  numopers
  1.0
  jar
  numopers
  http://maven.apache.org
 UTF-8junit
      junit
      3.8.1
      test

其中:

groupId: 通常为项目的顶级包名。

artifactId: 通常为项目名

version:项目的版本号,在开发的不同阶段,你需要更改这个版本号。

packaging:项目发布时的打包类型。比如对于普通Java程序打包为jar文件;对于Java web项目则打包为war文件。

name:通常也是项目名

url:项目的主页。

2. 添加源代码

在你的项目的src\main\java\net\jianxi\tutorials目录下,删除原有的App.java, 添加一个新的Java源文件: NumOpers.java, 其源代码如下:

package net.jianxi.tutorials;
public class NumOpers 
{
    public int add(int i, int j) {
        return i + j;
    }
    public int minus(int i, int j) {
        return i - j;
    }
}

之后可运行如下命令进行编译:

mvn compile

你应该可以看到如下结果:

3. 添加JUnit 4.x单元测试类

在你的项目的src\test\java\net\jianxi\tutorials目录下,删除原有的AppTest.java, 添加一个新的Java源文件: NumOpersTest.java, 其源代码如下:

package net.jianxi.tutorials;
import org.junit.* ;
import static org.junit.Assert.* ;
public class NumOpersTest {
    NumOpers no = new NumOpers();
    @Test
    public void testAdd() {
      assertEquals(no.add(3,5), 8);
    }
    @Test
    public void testMinus() {
      assertEquals(no.minus(10,5), 5);
    }   
}

4. 配置pom.xml限定JDK版本号为5, 并支持JUnit 4.7

修改后的pom.xml文件为:

代码
  4.0.0net.jianxi.tutorials
  numopers
  1.0
  jar
  numopers
  http://bluesfeng.javaeye.com
        maven-compiler-plugin
       1.5
          1.5
    UTF-8
   junit
      junit4.7test

现在你可以运行一下命令来自动测试了:

mvn test

如果测试通过,你可以看到如下结果:

1. 使用如下命令创建Web应用:

mvn archetype:generate -DgroupId=net.jianxi.tutorials.maven 
                       -DartifactId=webappdemo
                       -Dpackage=net.jianxi.tutorials.maven 
                       -DarchetypeArtifactId=maven-archetype-webapp 
                       -Dversion=1.0 -DinteractiveMode=No

所创建的Web应用程序目录结构如下:

2. 运行如下命令创建web打包文件:

mvn package

你应该可以看到如下目录结构:

3. 配置pom.xml, 直接运行这个Web应用程序

你这是可以将上一步生成的webappdemo.war直接发布到Web应用服务器中,比如Tomcat. 来访问你的应用. 在Maven中,为了方便进行测试你的Web应用,可以直接配置pom.xml支持Jetty. 下面是该过后的pom.xml:

 4.0.0     
    net.jianxi.tutorials.maven  
    webappdemo  
    war  
    1.0  
    webappdemo Maven Webapp  
    http://maven.apache.org  
junit
            junit 
            4.7      
            test          
        webappdemo
       org.mortbay.jetty
                maven-jetty-plugin

这样你就可以运行如下命令来启动你的Web应用:

> mvn jetty:run

之后你就可以通过: http://localhost:8080/webappdemo/ 来访问这个web应用了.

相关文章

为什么要做持续部署?
剖析“持续交付”:五个核心实践
集成与构建指南
持续集成工具的选择-装载
相关文档

持续集成介绍
使用Hudson持续集成
持续集成之-依赖管理
IPD集成产品开发管理
相关课程

配置管理、日构建与持续集成
软件架构设计方法、案例与实践
单元测试、重构及持续集成
基于Android的单元、性能测试
 
分享到
 
 


集成与构建指南
项目管理:Maven让事情变得简单
持续集成工具hudson
持续集成
Maven权威指南
程序集(UML中的包)之间循环
更多...   


产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员


海航股份 重构及持续集成
电研华源 设计原理、建模与重构
软件配置管理日构建及持续集成
单元测试、重构及持续集成
中国软件研发中心 单元测试与重构
单元测试、重构和持续集成实践
罗克韦尔 C++单元测试+重构+Gtest
更多...