转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6625724.html 

一:目前开发存在的问题

在没有Maven之前,我们开发一个项目,需要自行导入各种不同的jar包。当依赖包数量多起来,就很难管理了。而且,如果团队开发时,一个人提交的项目所使用的IDE版本与另一个人的不一致,那么所提及的项目就可能不能正常地在别人的IDE中编译、运行。总的来说,大概有以下几类问题:

1:jar包太多,需要手动下载、导入,比较麻烦;

2:jar包有依赖冲突时,需要自行排查;

3:使用ant脚本构建项目时,需要写很多重复的任务;

4:项目拷贝给别人时,不仅源代码,还需要拷贝大量jar包;

5:测试项目时,需要一个个运行测试;

二:Maven能干什么

Maven现在越来越流行,已经逐步取代Ant。它比Ant单一的批处理功能提供更多实用服务。

1:依赖管理:通过一个xml文件,同一管理项目中所以jar包。开发项目时,需要用到的jar包只需在配置文件中配置好几个相关信息,Maven就会自动下载、导入到项目中,并且如果该jar包有依赖包,也会自动一并下载、导入。如果项目有jar包依赖冲突,只需通过Maven的 mvn -X compile dependency:tree -Dverbose 指令即可自动排查出冲突的jar包信息。

2:项目构建:这一步类似Ant,可以通过Maven的配置脚本批处理项目的编译、测试、打包、部署、发布等操作;

3:信息管理:管理项目的相关信息,比如版本信息、开发者信息等。

三:Maven依赖管理简介

1:在pom.xml中进行同一配置,管理;

2:对每个jar包,通过:groupId、artifactId、version 三个信息唯一确定一个jar包;

3:jar包的来源:在配置好jar包信息后,Maven是如何高效率地找到所需jar包并下载导入的?主要有三个来源。

1)本地资源库:Maven安装后会在本机创建一个reposity文件夹,执行pom.xml时会把jar包下载到这里来,如果已经有的,就不会再下载。相当于一个本地缓存。

2)共享资源库:即中央资源库,Maven有一个中央仓库存放来自全世界的共享jar包,通过配置的 groupId、artifactId、version 即可在中央仓库中唯一定位jar包,然后下载到本地资源库中。

3)私人资源库:也叫中转资源库。对于一个公司而言,有可以有自己开发的jar包,并且不想公开出去;还有,公司可以提供一个jar包中转站,把网上常用的jar包先下载到一个仓库中,公司程序员在本地资源库找不到所需jar包时可以先到公司的资源库寻找、下载,这样就无需到网上下载了。这个资源库就是私人资源库。

4:jar包的寻找过程:执行pom.xml—>本地资源库寻找—>私人资源库寻找—>中央资源库寻找

5:Maven资源库配置:进入maven安装目录/conf/ ,编辑 settting.xml:

本地仓库:<localRepository>:表示本地库的保存位置,也就是maven2主要的jar保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径。

共享仓库:Mirrors 表示镜像库,指定库的镜像,用于增加其他库(私库、远程库)

关于Maven的具体使用,会在后面详细记录。

最新文章

  1. c# 备份数据库恢复数据库
  2. ActiveReports 报表应用教程 (8)---交互式报表之动态过滤
  3. 设置IE兼容模式的几种方法
  4. hdu-------(1698)Just a Hook(线段树区间更新)
  5. tcpdump tutorial
  6. asp.net中js和jquery调用ashx的不同方法分享
  7. poj 1050 To the Max (简单dp)
  8. linux进程地址空间详解(转载)
  9. QT学习篇:入门(1)
  10. jQuery鼠标悬停图片放大显示
  11. My Answer in Regex Golf
  12. PHP斐波那契数列有点不明白有哪位大佬能给讲讲思想以及实现过程
  13. 推荐!PlayGround:可视化神经网络
  14. 使用guava过期map
  15. BeanUtils的copyproPerties方法的用法
  16. Gephi安装过程中出现错误:can’t find java 1.8 or higher
  17. 大华等其他NVR接入海康IPC H.264方法
  18. 用模糊查询like语句时如果要查是否包含%字符串该如何写
  19. Chrome插件:gitlab activity dashboard background-color
  20. JAVA:认识多线程

热门文章

  1. algid parse error, not a sequence错误
  2. Java并发编程的艺术(四)——线程的状态
  3. [Web 前端] CSS篇之 4. position 和 display 的取值和各自的意思和用法
  4. FreeMarker:Java模板引擎
  5. Git项目的初始化
  6. SKU与SPU
  7. perf使用示例1
  8. Windows 添加计划任务 每隔一定时间执行指定批处理脚本
  9. vue组件的hover事件模拟、给第三方组件绑定事件不生效问题
  10. Logcat用法初探