简介

什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架。 
Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作,例如:创建报表、检查、构建和测试自动化设置。概况地说,Maven简化和标准化项目建设过程,增加可重用性并负责建立相关的任务。 
(注:Maven项目的结构和内容在一个XML文件中声明,pom.xml项目对象模型(POM),这事系统的基本单元)

Apache Maven 是一种创新的软件项目管理工具,提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档。最强大的功能就是能够自动下载项目依赖库。

Maven功能:

  • 依赖库管理: 
    我们在项目开发中经常会引用一些jar包,按照往常的做法是搜索哪些是必须的然后再放到我们的项目中,比较麻烦。而maven在pom配置文件中对依赖库进行了配置,例如:使用struts2的xx版本,xx发布的,maven插件便会从中央仓库去获取相应的jar包;
  • 项目的构建: 
    例如java开发时,使用maven可以替代eclipse在创建和编译项目时的作用;
  • 项目的版本管理。

Maven安装使用:

1.下载安装包:

Maven官网下载指定版本的maven安装包,例如这里我下载的是:apache-maven-3.5.4-bin.zip

2.解压配置环境:

直接解压安装包到指定目录(文件目录最好不带中文),打开环境变量,新建一个变量,变量名:MAVEN_HOME,变量值为压缩包解压之后的文件路径,例如: 
 
往Path变量中添加:%MAVEN_HOME%\bin;,配置完成后打开命令行窗口,输入mvn -version,假如之前的配置操作成功,即如下: 

基本操作:

以往我们创建一个java工程都是在eclipse中完成的,如今我们可以使用maven来完成创建,步骤如下: 
相关指令集:

mvn archetype:generate  #创建项目指令
mvn compile #编译项目指令
mvn test #测试项目指令
mvn clean package #打包项目指令
mvn clean install #项目仓库化指令

1.使用archetype指令来创建项目:

mvn archetype:generate
-DgroupId=com.test.maven(项目包名)
-DartifactId=TestMaven(工程名)
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false

初次创建的时候,会下载很多maven的默认包到系统盘用户数据中的Administrator/.m2\repository目录下: 
 

问题:假如你和我一样在创建文件的时候,出现了卡在Generating Project in Batch mode的问题,那是因为创建项目时需要下载一个4.1M左右的archetype-catalog.xml文件

优化方案:假如要加快这个过程,可以直接到http://repo.maven.apache.org/maven2/archetype-catalog.xml下载此文件然后放到本地Administrator\.m2\repository\org\apache\maven\archetype\archetype-catalog\3.0目录下,创建项目指令最后添加一个-DarchetypeCatalog=local即可。

创建成功,可以看到: 
 
创建出来的目录结构如下:

TestMaven
|-src
|---main
|-----java
|-------com
|---------test
|-----------maven
|-------------App.java
|---test|-----java
|-------com
|---------test
|-----------maven
|-----------AppTest.java
|-pom.xml

2.编译运行:

打开pom.xml文件,可以看到里面的<dependencies></dependencies>依赖集合中添加了一个测试用的junit3.8.1版本的测试包配置信息:

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>com.test.maven</groupId>
<artifactId>TestMaven</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>TestMaven</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

在命令行窗口进入到刚刚创建的TestMaven项目目录下,使用编译指令进行编译:

mvn compile

编译结束后会在当前目录下生成一个target文件夹,里面有编译.java源码得到的.class文件,而且Administrator\.m2\repository文件夹会多出一个junit的目录,pom.xml中配置的相应版本的jar依赖包会被下载到此目录下: 
 
使用测试指令进行测试运行:

mvn test

3.打包:

假如我们先修改一下AppTest.java入门函数testApp()的内容,加入一个打印代码:

    public void testApp()
{
assertTrue( true );
System.out.println("hello maven");
}

在当前项目目录下运行打包指令:

mvn clean package

执行此指令完成了几个操作:

  • 清理目标目录(clean);
  • target目录下会生成一个打包项目得到的TestMaven-1.0-SNAPSHOT.jar目标文件(带SNAPSHOT表示不稳定版本);
  • 生成测试报告到target\surefire-reports目录;
  • Maven编译源码,并运行测试用例。

4.将项目当做Maven的本地仓库:

假设通过maven创建的项目已经打包并已测试没问题,又想在其他项目使用本项目的功能,可以通过maven指令将此项目变为本地仓库,指令如下:

mvn clean install

指令运行之后,在Administrator\.m2\repository文件夹会增加此项目的目录,其他项目需要用到本项目功能,只需要通过从Maven本地仓库提取jar包即可。

最新文章

  1. innodb的锁
  2. [知识点]Cantor展开
  3. MINIX3 保护模式分析
  4. [Javascript] Webpack Loaders, Source Maps, and ES6
  5. 深入Java虚拟机读书笔记第二章平台无关性
  6. POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
  7. C# 手机格式验证
  8. iOS UITextView 根据输入text自适应高度
  9. 自定义类似于Jquery UI Selectable 的Vue指令v-selectable
  10. 前端div层级控制
  11. P1177 【模板】快速排序(学完归并和堆排之后的二更)
  12. python接口自动化测试五:乱码、警告、错误处理
  13. Spring注解@Component、@Repository、@Service、@Controller @Resource、@Autowired、@Qualifier、@scope
  14. CentOS7 vsftpd 安装及配置
  15. Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  16. jdk1.6中bin目录下的工具及其作用
  17. Docker镜像仓库Harbor之搭建及配置
  18. spring 优点
  19. apt 安装 tomcat
  20. DNS原理及解析过程

热门文章

  1. nginx静态资源web服务
  2. Pytorch学习(一)—— 自动求导机制
  3. drf版本控制 django缓存
  4. 简单了解hash
  5. Django Model two
  6. luogu3193 [HNOI2008]GT考试
  7. luogu3389 【模板】高斯消元法
  8. apache php 多站点配置 重新整理
  9. Flask_配置文件
  10. 如何让ie8/ie7/ie6支持html5的&lt;footer&gt;&lt;/footer&gt;&lt;nav&gt;&lt;/nav&gt;等标签