maven是一个Java语言编写的开源项目管理工具,是Apache软件基金会的顶级项目。主要用于项目构建,依赖管理,项目信息管理。
对于程序猿来讲,maven再熟悉不过了,关于maven的文章也很多,但是都没有抓住重点,那么你有福利了,来听我将maven的故事,保准你一听就懂,一看就会,在学习maven的道路上畅通无阻。
你可以把maven当做一个超市,超市里有柴米油盐酱醋茶等等很多材料,你需要哪个材料只需要通过一定的手段拿即可。对于刚入门的程序猿来讲,他(她)会认为是这样的:1、maven就是将jar包存放到maven本地仓库,本地仓库文件夹下的.m2文件夹下。2、pom.xml配置jar在maven本地仓库的坐标后jar会上传到中央仓库。这样理解也对,但不够深入。
”小朋友,你是不是 有很多问号?“本次是教大家入门,想深入了解maven,敬请等待下次分享。
一、maven的有优点与弊端
优缺点是我从网上摘抄的,没毛病。
优点如下:
1、简化了项目依赖管理。
2、易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作。
3、便于与持续集成工具(jenkins)整合。
4、便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
5、有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
6、maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等
缺点如下:
1、maven是一个庞大的构建系统,学习难度大
2、maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是一旦出了问题,难于调试。
3、当依赖很多时,m2eclipse 老是搞得Eclipse很卡。
4、中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。
二、使用maven好处
1、 maven不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库(也可以是私有仓库),能够帮我们自动下载构件。
2、为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题,它通过一个坐标系统来精确地定位每一个构件(artifact)。
3、还能帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表,版本控制系统,许可证,缺陷管理系统地址。
4、maven还为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件。通过衍生工具(Nexus),我们还能对其进行快速搜索。
5、maven对于目录结构有要求,约定优于配置,项目间切换省学习成本。
三、教你快速入门
1、下载maven组件(最新版本:3.6.3)
地址:http://maven.apache.org/download.cgi
2、配置环境变量
网上有很多此类文章,在这里就不再过多讲解。推荐:https://www.cnblogs.com/chuhongyun/p/11419014.html
大多数jar包来自国外 使用maven默认配置下载很费劲,这个时候可以在maven的配置文件(maven/config/setting.xml)里面加入镜像,重新下载jar包,速度很快。
3、Idea配置maven
自动下载
4、项目中使用maven
5、查看是否从仓库下载
四、踩坑记录
1、引入pom.xml文件中的依赖性能比较卡、慢
将setting文件中的镜像仓库地址改成阿里的镜像仓库,具体操作自行google
2、使用阿里镜像仓库访问https问题
因为没有安全证书,所以需要忽略证书,只需要设置一下即可,如下:
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
五、maven常用的命令
1、创建maven普通项目
mvn archetype:create -DgroupId=packageName -DartifactId=projectName
2、创建Maven的Web项目
mvn archetype:create -DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
3、编译源代码
mvn compile
4、编译测试代码
mvn test-compile
5、编译测试代码
mvn test
6、打包
mvn package
7、清除产生的项目
mvn clean
8、生成eclipse、idea项目
mvn eclipse:eclipse
mvn idea:idea
9、查看当前项目已被解析的依赖
mvn dependency:list
10、上传到私服
mvn deploy
11、强制检查更新,由于快照版本的更新策略(一天更新几次、隔段时间更新一次)存在,如果想强制更新就会用到此命令
mvn clean install-U
12、源码打包
mvn source:jar
13、发布第三方Jar到本地库中
mvn install:install-file -DgroupId=xxx.xx.xxxx -DartifactId=xxx -Dversion=0.0.1 -Dpackaging=jar -Dfile=路径/xxx-0.0.1.jar