之前课程作业中有使用到Maven,但当时对其理解支离破碎很是混乱,尤其对于里面的配置文件pom.xml掌握不清。近日正好在碰到了相关的教程,趁着有空对Maven的概念做一整理。
Maven的优势
问题引入:添加外部库的传统做法,如添加Apache Commons Math 3.6.1
-
搜索引擎搜索Apache Commons Math;
-
找到官网;
-
确定相应版本和下载路径;
-
下载到本地,找到里面的jar文件;
-
新建Java项目;
-
将jar文件添加到Iava Build Path:右键项目,Properties->Libraries 标签页->Add External Jars,添加;
-
开始编码、测试。
传统方法的优点:第三方库很强大,可以站在巨人肩膀上。
传统方法的缺点:搜索、确定版本、下载jar包,工作量大且不易;需要手动把jar包添加到项目build path;代码拷贝到别人的机器,需要同样的配置路径(很麻烦)。
思考:是否存在一种自动下载、管理jar包又能配置Build path的构建工具呢?
Java构建工具
使用Maven项目(Maven就是一种构建工具)
-
创建项目时,选择create maven project,依次填写项目名称等信息,创建完毕后观察到maven项目和普通java项目的目录结构有些微不同,maven项目下的source目录下有一个pom.xml。(也可以先创建普通java项目再将其转换为maven项目:选定项目名,右键configure->convert to maven project)
-
打开该文件,去第三方库官网(jar包的中央仓库)查找第三方jar的依赖文本,将复制的jar包依赖文本粘贴在里面。
-
编译的时候,选择run as-> maven build,这样在编译的过程中,工具会自动去官网下载需要的第三方库;
-
程序运行时:选择run as->java application.
-
之后,查看这个项目Java build path,可以发现里面没有jar路径,但有一个Maven Dependencies,里面有使用到的jar包,这个jar包的路径就在本地。
Maven检查和安装
新版的Eclipse默认安装了Maven。
检查是否正确安装Maven:
-
File菜单->new->other,在弹出窗口中查找是否有Maven项目。
-
window菜单->preferences,在弹出窗口中查找是否有Maven项目。
-
help菜单->install new software,在work with窗口中输入maven,下面显示出all intes are installed.
旧版的Eclipse中安装Maven插件:
-
Help菜单->install new software,在work with窗口中输入maven,打勾下面的软件,并一路next.
-
或者前往https://www.eclipse.org/m2e/ 进行下载
Eclipse的其他插件都可以用这种方法安装。
关于Maven
Maven有两重意思:
是一个软件,http://maven.apache.org
Maven在Eclipse中的插件,https://www.eclipse.org/m2e/
Maven除了软件、IDE的插件外,还有一个中心仓库,存储着许多第三方的jar包(类库),可以统计jar包的使用次数(被其他软件依赖的次数)。https://mvnrepository.com/ ,如果访问该仓库速度太慢,可以定位到国内的库:
阿里云国内Maven库地址:http://maven.aliyun.com/nexus/content/groups/public/
(若不想将程序(jar包)放入公开的中心仓库共享,可放在局域网搭建本地私有的Maven中心仓库。开发小组依然可以使用中心仓库所带来的便捷服务。)
Maven是一个构建工具,自动下载中心仓库的jar文件,存在本地进行管理,编译、测试、运行和打包发布Java项目。
Maven编译工作流程
编译时如果发现项目中使用了外部库,maven工具首先在本地.m2仓库检索(该仓库通常位于本地系统盘的用户文件下的.m2文件内);如果本地已有相应的jar包,则去中心仓库下载至本地仓库(同一个Jar包可以为多个Maven项目服务);最后Maven调用javac.exe来编译整个项目。(如下图所示)
POM(Project Object Model)
-
XML格式;
-
包含了项目信息、依赖信息(最重要)、构建信息;
-
构件信息(artifact):
-
groupId:组织
-
artifact:产品名称
-
version:版本号
-
Maven Repository
-
仓库存放和管理各种构件
-
本地仓库(本地用户的.m2文件夹)
-
远程仓库(中央仓库、阿里云仓库、谷歌仓库)
Maven项目的目录结构
基本目录结构
-src
-
main (业务程序)
-
java /存放java文件
-
resources /存放程序资源文件
-
-
test (单元测试文件)
-
java /存放测试程序
-
resources /存放测试程序资源文件
-
-pom.xml
Java构建工具总结:
构建工具功能:清理、编译、测试、打包、安装、部署
-
自动帮程序员甄别和下载第三方库(jar);
-
完成整个项目编译(调用javac.exe);
-
完成整个项目单元测试流程(调用Junit工具);
-
完成项目打包(jar/war等格式,调用jar.exe);
当前主要的Java构建工具:Maven,Gradle,Ivy,Buildr,Ant等,主流还是Maven居多。