一:没有Maven之前我们是如何管理项目依赖的?
如果项目A需要用到项目B的类中的方法,这时候该怎么做?我们会将B打成jar包,然后在项目A中引入B的jar包,如果A依赖与B项目,同时还需要把B依赖的jar包找出来,再手动导入,超级繁琐。
这样做几种缺陷:
1.如果在开发过程中,发现B中的bug,则必须将B项目修改好,并重新将B打包并对A项目进行重编译操作。
2.在完成A项目的开发后,为了保证A的正常运行,就需要依赖B(就像在使用某个jar包时必须依赖另外一个jar一样),两种解决方案,第一种,选择将B打包入A中,第二种,将B也发布出去,等别人需要用A时,告诉开发者,想要用A就必须在导入Bjar包。两个都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖B的其它项目,B已经存储到本地了,在导入A的jar包的话,就有了两个B的jar),后者是我们常遇到的,找各种jar包,非常麻烦(有了maven就不一样了)
二.什么是Maven项目?
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。通俗地讲,maven就是管理项目jar包之间互相依赖的工具,就是通过pom.xml文件的配置获取jar包而不用手动去添加jar包。
如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。
那么,问题来了!!!
1,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等,这里提前了解一下我们如何通过pom.xml文件获取到想要的jar的,具体后面会详细讲解该配置文件。
三.如何创建Maven项目?maven项目的结构是怎样,与普通java,web项目的区别在哪里?
(1)使用命令创建
mvn archetype:generate -DgroupId=com.wuhao.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-arche
mvn:核心命令
archetype:create:创建项目,
-DgroupId=com.wuhao.maven.quickstart :创建该maven项目时的groupId是什么。一般使用包名的写法。因为包名是用公司的域名的反写,独一无二
-DartifactId=simple:创建该maven项目时的artifactId是什么,就是项目名称
-DarchetypeArtifactId=maven-archetype-quickstart:表示创建的是[maven]java项目
(2)在eclipse或IDEA开发工具中创建
创建完java项目的文件夹目录结构如下:
simple
—pom.xml 核心配置,项目根下
—src
—main
—java java源码目录
—resources java配置文件目录
—test
—java 测试源码目录
—resources 测试配置目录
maven项目比普通的项目多了一个pom.xml文件.
(3)命令操作maven java或web项目
编译:mvn compile –src/main/java目录java源码编译生成class (target目录下)
测试:mvn test –src/test/java 目录编译
清理:mvn clean –删除target目录,也就是将class文件等删除
打包:mvn package –生成压缩文件:java项目#jar包;web项目#war包,也是放在target目录下
安装:mvn install –将压缩文件(jar或者war)上传到本地仓库
部署|发布:mvn deploy –将压缩文件上传私服
使用 mvn install,在本地仓库会有该项目的jar包
四.我们是如何通过pom.xml文件获取到想要的jar的?
首先说一下仓库的概念:
仓库分为本地仓库和远程仓库,远程仓库分为私服和中央仓库
本地仓库,在maven/settings.xml配置文件中设置:以后我们下载的jar包都会存放在这里.
私服:第三方仓库,如果我们从中央仓库下载,速度会很慢,并且如果外网不可访问的话,项目开发机会是不可能进行的,这时候就需要公司内部自己搭建一个仓库,用来当做中央仓库的镜像的,
中央仓库:http://repo1.maven.org/maven2,国外的一个仓库,这里几乎涵盖了我们需要的所有的jar 包,插件等
jar包获取的过程:
先从本地,本地仓库没有,则从私服上下载,私服上也没有的话,则私服会从中央仓库下载进行保存,然后我们再从私服上下载.
上面说过定位一个jar包的三个属性,groupId,artifactId,version,所以就可以下载相应的jar包。
五.如何搭建Maven 镜像仓库?私服如何搭建?
https://jingyan.baidu.com/article/49ad8bceafbf6e5834d8fa8d.html