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

转载于:https://www.cnblogs.com/itgg168/archive/2012/11/27/2790406.html

Maven使用教程(转)相关推荐

  1. maven安装教程安装教程_Maven教程之春

    maven安装教程安装教程 1.简介 在这篇文章中,我们将演示如何针对非常特定的用例对Spring使用Maven依赖项. 我们使用的所有库的最新版本都可以在Maven Central上找到. 对于一个 ...

  2. FindBugs Maven插件教程

    FindBugs是一种静态代码分析工具,可识别从Java代码中发现的问题. 我们可以使用FindBugs Maven插件将FindBugs集成到我们的构建过程中. 这篇博客文章确定了四个典型的用例,并 ...

  3. Maven使用教程和开发经验总结

    Maven使用教程和开发经验总结 一.项目构建 bash 给你一套源代码,你怎么能跑起来? 不能把!就是几个文件夹,几个文件.是不能运行的! 是不是需要和idea打交道,告诉idea怎么样才能运行起来 ...

  4. Maven简明教程(4)---依赖关系(理论篇)

    [工欲善其事,必先利其器] 在本文中,我们来简单介绍maven中几个常见的概念,这些概念在日常开发中经常见到.各位看官可以下面的介绍作为参考知识. -------------------------- ...

  5. Maven简明教程(5)---依赖关系(实例篇)

    2019独角兽企业重金招聘Python工程师标准>>> [工欲善其事,必先利其器] 上文中,我们简单介绍了依赖关系的基本理论与配置方式.但是由于这个知识点在我们日后的开发过程中会经常 ...

  6. Apache Maven 学习教程

    Blog: https://blog.yilon.top Apache Maven 概述 Maven - 概述 Maven 是什么? Maven 是一个项目管理和整合工具.Maven 为开发者提供了一 ...

  7. Maven下载+Maven环境变量配置+IntelliJ IDEA配置Maven(详细教程) ,收藏起来吧

    这里是Maven的下载链接,看自己需要使用那个版本: 点击这里下载Maven 进入下载页面如图: 1.使用最新版本的话直接点击上图中的3.6.3的zip可以直接下载,如果想使用之前,版本的话就点击上图 ...

  8. Maven安装教程讲解

    目录 一.下载安装JDK 二.下载 Maven 三.配置 Maven 环境变量 四.配置 Maven 仓库地址 五.配置 Maven 镜像 六.配置 Maven JDK 七.IDE配置 Maven 八 ...

  9. 使用Nexus搭建Maven私服教程(附:nexus上传、下载教程)

    一.基本介绍(Nexus(maven私服)) 1,如果没有搭建私服会有什么问题? 如果没有私服,我们所需的所有构件都需要通过 Maven 的中央仓库或者第三方的 Maven 仓库下载到本地,而一个团队 ...

最新文章

  1. ios实例开发精品源码文章推荐
  2. 2020,智能货柜的现状与未来
  3. winrar远程代码执行漏洞复现(cve-2018-20250)
  4. 用C语言扩展Python的功能
  5. mysql 5.1 互为主从,mysql数据库互为主从配置方法分享
  6. python应用html模板,Flask框架如何使用HTML模板
  7. java怎样获取变量的类型
  8. 我的XX游戏面试之旅
  9. [书目20161206]小狗钱钱的人生整理术
  10. 学习vim: vim cheat sheet
  11. struts+spring+mybatis介绍
  12. Delphi中对URL进行编码和解码
  13. sql server 标准版升级专业版或者开发版没有sql server profiler
  14. Arcgis Android 定位
  15. 单调队列java_单调队列单调栈
  16. 远程链接linux桌面的软件,远程linux桌面软件
  17. 计算机配置价格对比,硬件配置、价格对比
  18. Skywalking全部
  19. 七款无广告/不骚扰输入法
  20. 安装elasticsearch8.0.1之后无法访问9200:Empty reply from server

热门文章

  1. 【Camera专题】Qcom-高通OTP完全调试指南-上
  2. 聊聊LettucePoolingConnectionProvider
  3. 负载均衡集群ipvsadm命令及基本用法
  4. Android Weekly Notes Issue #226
  5. Python3学习笔记:使用代理访问url地址
  6. SharePoint 2003, 2007对上传文件的URL的长度限制
  7. BZOJ3029守卫者的挑战(概率dp)
  8. idea 中使用@Autowired注入mybatis Mapper接口时报错
  9. Kettle调用Java类
  10. 离散数学及其应用第6版中文版勘误