博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Maven】Java项目管理工具
阅读量:4101 次
发布时间:2019-05-25

本文共 2312 字,大约阅读时间需要 7 分钟。

一、为什么要Maven

在开发中经常需要依赖第三方的包,包与包之间存在依赖关系,版本间还有兼容性问题,有时还里要将旧的包升级或降级,当项目复杂到一定程度时包管理变得非常重要。

 

Maven是当前最受欢迎的Java项目管理构建自动化综合工具,类似以前Java中的Ant、node.js中的npm、dotNet中的nuget、PHP中的Composer

Maven这个单词来自于意第绪语(犹太语),意为知识的积累。

Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。

每个Java项目的目录结构都没有一个统一的标准,配置文件到处都是,单元测试代码到底应该放在那里也没有一个权威的规范。

因此,我们就要用到Maven(使用Ant也可以,不过编写Ant的xml脚本比较麻烦)----一个项目管理工具。

Maven主要做了两件事:

  1. 统一开发规范与工具
  2. 统一管理jar包

如果没有Maven,你可能不得不经历下面的过程:

复制代码

1 如果使用了spring,去spring的官网下载jar包;如果使用hibernate,去hibernate的官网下载Jar包;如果使用Log4j,去log4j的官网下载jar包.....2 当某些jar包有依赖的时候,还要去下载对应的依赖jar包3 当jar包依赖有冲突时,不得不一个一个的排查4 执行构建时,需要使用ant写出很多重复的任务代码5 当新人加入开发时,需要拷贝大量的jar包,然后重复进行构建6 当进行测试时,需要一个一个的运行....检查

复制代码

有了Maven,它提供了三种功能:

1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包。2 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验、编译、测试、打包、部署、发布...3 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等 

官网:

教程:

Maven库: 

中央仓库资源:

二、安装与配置

其实主流的开发工具如IDEA、Eclipse都集成了Maven(可见重要性),但为了更加深刻的学习与管理该工具(比如多个IDE共享的问题),个人建议还是单独安装比较好。

2.1、官网下载安装包

在浏览器中打开下载地址:

2.2、配置环境变量

注意:安装maven之前,必须先确保你的机器中已经安装了JDK,如果是Maven3则必须JDK1.7以上。

1.解压压缩包

2.添加环境变量MAVEN_HOME,值为apache-maven的安装路径(没有中文)

3.在Path环境变量的变量值末尾添加%MAVEN_HOME%\bin;

4.在cmd输入mvn –version,如果出现maven的版本信息,说明配置成功。

2.3、本地仓储配置

如果您不配置,默认会在如下位置存放从远程下载到的包:

 

从中央仓库下载的jar包,都会统一存放到本地仓库中。我们需要配置本地仓库的位置。

打开maven安装目录,打开conf目录下的setting.xml文件。

可以参照下图配置本地仓储位置。

你还可以在运行时指定本地仓库位置:

mvn clean install -Dmaven.repo.local=d:\yourpath

2.4、中央仓库配置

当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下:

1、从本地资源库中查找并获得依赖包,如果没有,执行第2步。2、从Maven默认中央仓库中查找并获得依赖包(http://repo1.maven.org/maven2/),如果没有,执行第3步。3、如果在pom.xml中定义了自定义的远程仓库,那么也会在这里的仓库中进行查找并获得依赖包,如果都没有找到,那么Maven就会抛出异常。

修改默认中央仓库地址

 

常用地址:

复制代码

1、http://www.sonatype.org/nexus/  私服nexus工具使用2、http://mvnrepository.com/ (推荐)3、http://repo1.maven.org/maven24、http://maven.aliyun.com/nexus/content/groups/public/  阿里云  (强力推荐)5、http://repo2.maven.org/maven2/ 私服nexus工具使用6、http://uk.maven.org/maven2/7、http://repository.jboss.org/nexus/content/groups/public8、http://maven.oschina.net/content/groups/public/  9、http://mirrors.ibiblio.org/maven2/10、http://maven.antelink.com/content/repositories/central/11、http://nexus.openkoala.org/nexus/content/groups/Koala-release/12、http://maven.tmatesoft.com/content/groups/public/

转载地址:http://rggii.baihongyu.com/

你可能感兴趣的文章
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>
CentOS7,玩转samba服务,基于身份验证的共享
查看>>
计算机网络-网络协议模型
查看>>
计算机网络-OSI各层概述
查看>>
Java--String/StringBuffer/StringBuilder区别
查看>>
分布式之redis复习精讲
查看>>
数据结构与算法7-栈
查看>>
Java并发编程 | 一不小心就死锁了,怎么办?
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>
(python版)《剑指Offer》JZ13:调整数组顺序使奇数位于偶数前面
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ32:把数组排成最小的数
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
JSP/Servlet——MVC设计模式
查看>>