maven的认识
一、什么是maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
1、maven下载与安装
1.官网下载安装(http://maven.apache.org/download.cgi),选择bin.zip的版本
2.解压到安装目录
3.配置环境:右击桌面“此电脑”并选择“属性”,选择“高级系统设置”,如图:
选择“环境变量”,如图:
将安装路径的bin目录放到path中如图:
cmd运行:
2、maven配置镜像
找到安装配置,并在安装位置找到conf目录下的setting.xml文件。
1.修改localRepository标签:修改仓库文件的位置存放
2.配置阿里云镜像(下载jar会更快):在mirrors标签下添加如下代码:
3、eclipse中的配置mave
windows -> preferences -> maven设置如图所示:
4、IDEA中的配置
file -> setting -> maven :设置与上面相似。
二、maven简单例子的使用
打开win+r 输入cmd。输入:
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=demo
意思就是在你当前运行目录建立一个组名为“com.chinasofti.build -DartifactId”的”demo“项目。
等运行好,在输入:
mvn clean compile exec:java -Dexec.mainClass="com.chinasofti.build.App"
就会看到”hello world“。
1、例子中的依赖引入
1.1、依赖
依赖是Maven 中最关键的部分,我们使用它的依赖管理。它通过groupId、artifactId、version三个向量定位maven仓库所在的位置。
1.2、依赖范围
在依赖的时候有个scope(默认是compile),一共有六种范围:compile、test、provided、runtime、system 和import。这里列举主要的三种:
1.3、依赖的传递性
传递性:A依赖B,B依赖C,那么A依赖C,这就是依赖性。
1.4、依赖的原则
最短路径优先原则:同时依赖的那个有不同版本时,选择路径最短的那个。
路径相同先声明原则:如果A依赖B和C,B和C没有依赖,但都有依赖D并且都版本不一致,那么A会引入D。
1.5、依赖的排除
我们在当前工程中引入了A 的依赖,而A 同时有对B 的依赖,根据传递性我们知道,在当前工程中会自动引入对B 的依赖。其中B 可能是一个不稳定的版本,或者对当前的工程存在着不良的影响 。这时我们就可以在引入对A 依赖的同时排除对B 的依赖。
2、生命周期
maven对构建(build)的过程进行了抽象和定义,这个过程被称为构建的生命周期(lifecycle)。生命周期(lifecycle)由多个阶段(phase)组成,每个阶段(phase)会挂接一到多个goal。goal是maven里定义任务的最小单元,相当于ant里的target。
可以理解maven为一个插件的容器,每个插件绑定到某个goal执行
详情生命周期https://www.cnblogs.com/ysocean/p/7456179.html
3、mave的继承
3.1、通过dependenciesManagement与dependencies继承
父maven项目中通过dependenciesManagement中定义公共依赖项
子maven项目中通过dependencies中定义公共依赖项
三、其他
1.1、常用命令
alias mvni='mvn -T 1C clean install -Dmaven.test.skip=true'
alias mvnp='mvn -T 1C clean package -Dmaven.test.skip=true'
alias mvnv='mvn versions:set -DgenerateBackupPoms=false'
alias mvnd='mvn -T 1C clean deploy -Dmaven.test.skip=true'
alias mvndd='mvn -T 1C clean deploy -P dev -Dmaven.test.skip=true'
alias mvndo='mvn -T 1C clean deploy -P online -Dmaven.test.skip=true'
alias mvnc='mvn -T 1C clean eclipse:clean idea:clean'
四、总结
使用maven可以快速添加依赖,有利于jar、插件等管理。