文章目录
1.概念
Maven:翻译过来专家,内行。作为Apache组织中一个开源项目,Maven主要服务于基于Java平台的项目构建,依赖管理,和项目信息管理。
无论是小型的开源类项目,还是大型的企业级应用,无论是传统的瀑布式开发,还是流行的敏捷开发,maven都能大展身手。
1.1.为什么使用maven
1.更好的构建和管理项目
2.自动导入依赖,不需要我们再去网上拉jar包
2.项目构建
构建(build) 是每一个程序员每天都在做的工作,创建项目,创建类,每天都在做。到了公司里,我们每天一上班,就要从git或者 svn更新代码,然后再测试自己的代码,如果有问题,就要和同事一起调试,修复代码,完了之后再继续自己的工作,编写自己的单元测试和产品代码。
总结下来:除了写代码,我们每天都有相当一部分时间花在了编译,运行单元测试,生成文档,打包和部署等繁琐且不起眼的工作上,这就是构建。
maven:能使软件的构建可以像全自动流水线一样,所有的繁琐的步骤都能自动完成。
2.1.项目构建工具
Ant:
最早的构建工具,基于IDE(开发工具),大概是2000年有的,是当时最流行的Java构建工具,但是它的缺点是XML脚本编写格式让XML文件非常大,优点是ant对工程构建功能的过程控制非常好。
maven:
项目对象模型,通过其描述信息来管理项目的构建,报告和文档的软件项目管理工具,maven是第一个支持从网上下载的工具,仍然采用的是XML(pom.xml)做为配置文件格式,maven专注的是依赖(jar包)管理,使用Java编写。
Gradle:
结合了Ant和maven的优点,既有Ant的灵活,还有maven的生命周期管理,它最后被Google作为了Android御用管理工具,它最大区别是不使用XML作为配置文件,而是采用了 DSL格式,使得脚本更加简洁。
目前,Ant比较老,所以一般的传统软件企业公司都是使用maven来编写Java,maven是当前大多数互联网公司会使用的构建工具,中文文档也比较齐全,gradle是用groovy编写,目前比较新,以后可能会有很大的使用空间。
3. Maven的特性
3.1.依赖管理系统
maven引入了一个全新的依赖管理系统,jar包升级时修改配置文件即可。
在Java世界中,我们使用groupId,artifactId,version组成的Coordination(坐标)唯一标识一个依赖。
任何基于maven构建的项目自身也必须满足定义这三个属性,生成的包可以是jar包,也可以是war包。
一个典型的依赖引入如下所示:
<dependency>
<groupId>javax.activation</groupId> //当前jar包所属的公司
<artifactId>javax.activation-api</artifactId> //jar包名字
<version>1.2.0</version> //版本号
</dependency>
3.2.多模块构建
项目分为:mapper( dao),service,controller层,分为多个模块已经是一种通用的方式。
在maven中可以定义一个parent POM作为一组module的聚合 POM。在该POM中可以使用标签来定义一组子模块,parent POM中的build配置以及依赖配置都会自动继承给module。
<!--子项目-->
<modules>
<module>spring-ioc</module>
<module>HelloSpring</module>
<module>spring-ioc2</module>
<module>spring-DI</module>
<module>spring-autowired</module>
<module>spring-annotation</module>
<module>spring-appconfig</module>
<module>spring-demo</module>
</modules>
父类项目 和子项目,上边的内容是写在父类项目的pom.xml里,父类的依赖会自动继承给子类项目,
标签里都是子类项目。不需要再次引入父类项目有的依赖。
3.3.一致的插件引入机制
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
4. Maven的安装配置和目录结构
4.1. maven安装与环境变量配置
4.1.1.检查 jdk版本
要求 jdk1.7以上, 推荐使用1.8或9
cmd查看jdk版本, 命令行:java -version
4.1.2. maven下载安装
官网下载
4.1.3.配置环境变量
找到我的电脑
右键属性 -> 高级系统设置
-> 环境变量
-> 在系统变量
中新建一个变量名为MAVEN_HOME
的变量,值为maven 解压的地址
在变量名为PATH
的环境变量 中添加一个%MAVEN_HOME%\bin
的变量名,然后点击确定
4.1.4.测试环境变量
cmd 输入 mvn -version环境变量是否配置成功
4.1.5.配置阿里云仓库
因为依赖是自动导入的,默认是从国外的网站下载,网速会很慢,所以自己配置仓库
然后加上云仓库
<!-- 阿里云中央仓库镜像地址 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云谷歌仓库</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云阿帕奇仓库</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云spring插件仓库</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
<!-- 腾讯云中央仓库 -->
<mirror>
<id>tencent</id>
<name>tencent maven mirror</name>
<url>https://mirrors.tencent.com/nexus/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
4.1.6.创建repository文件
在maven 目录下创建 repository文件,用来存放下载好的依赖(jar包)。
在conf - settings.xml里(用Notepad++打开),把默认的 localRepository标签注释,然后写入
<localRepository>你的repository目录</localRepository>
例如:
<localRepository>D:\work_Space\apache-maven-3.8.1\repository</localRepository>
如果不修改的话,默认是在C盘