zoukankan      html  css  js  c++  java
  • Maven使用教程

    1. Maven简介

    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项目(在linux中安装过程类似)

    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
    安装 mvn clean install

    2. pom.xml配置初步

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

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

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

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

    复制代码
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
    ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.jianxi.tutorials</groupId>
    <artifactId>numopers</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>numopers</name>
    <url>http://maven.apache.org</url>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    </project>
    复制代码

    其中:

    • groupId: 通常为项目的顶级包名。
    • artifactId: 通常为项目名
    • version:项目的版本号,在开发的不同阶段,你需要更改这个版本号。
    • packaging:项目发布时的打包类型。比如对于普通Java程序打包为jar文件;对于Java web项目则打包为war文件。
    • name:通常也是项目名
    • url:项目的主页。

    2. 添加源代码

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

     1 package net.jianxi.tutorials;
     2      
     3 public class NumOpers 
     4 {
     5     public int add(int i, int j) {
     6      return i + j;
     7     }
     8          
     9     public int minus(int i, int j) {
    10      return i - j;
    11     }
    12 }

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

    mvn compile

    你应该可以看到如下结果(如果你是第一次用maven来编译文件,maven会链接到http://repo.maven.apache.org/maven2上下载为解决依赖性所需的pom文件和相应的jar包,在linux下的默认存放目录文~/.m2):

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

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

     1 package net.jianxi.tutorials;
     2 import org.junit.* ;
     3 import static org.junit.Assert.* ;
     4      
     5 public class NumOpersTest {
     6     NumOpers no = new NumOpers();
     7     @Test
     8      public void testAdd() {
     9           assertEquals(no.add(3,5), 8);
    10     }
    11 
    12     @Test
    13      public void testMinus() {
    14          assertEquals(no.minus(10,5), 5);
    15       }   
    16 }

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

    修改后的pom.xml文件为:

    复制代码
    代码
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
    ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.jianxi.tutorials</groupId>
    <artifactId>numopers</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>numopers</name>
    <url>http://bluesfeng.javaeye.com</url>

    <build>
    <plugins>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>1.5</source>
    <target>1.5</target>
    </configuration>
    </plugin>
    </plugins>
    </build>


    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId><version>4.7</version><scope>test</scope>
    </dependency>
    </dependencies>
    </project>
    复制代码
    现在你可以运行一下命令来自动测试了:

    mvn test

    如果测试通过,你可以看到如下结果(同样地,如果你是第一次进行测试,maven仍然会下载顶级pom.xml中所需的依赖性pom文件和相应jar包):

    转载自:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033781.html

  • 相关阅读:
    使用Speex中的AEC模块,提高声音质量(转)
    音频编解码speex库的使用方法
    VC 多线程编程(转)
    并口、串口、COM口区别
    用GDB调试程序
    [转]PCM文件格式
    PreTranslateMessage作用和使用方法
    音频编解码标准
    VS2010 运行速度加快方法(转)
    ON_COMMAND ON_MESSAGE ON_NOTIFY区别与联系
  • 原文地址:https://www.cnblogs.com/beanmoon/p/2790037.html
Copyright © 2011-2022 走看看