Maven介绍
Maven 是一个项目管理和 综合工具,Maven 提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成项目的基础工具建设,Maven 使用标准的目录结构 和 默认构建生命周期。
Maven是什么?
它是一个 Apache 的开源项目,主要服务于基于 Java 平台的项目构建,依赖管理 和项目信息管理。
配置maven的环境变量
右击此电脑,选择属性,打开高级系统设置,选择环境变量,在系统变量找到 path ,点击编辑,将 maven 的安装路径添加上即可
Maven目录说明
bin:该目录下存放的是执行文件,命令
boot:该目录存放的是 maven 启动时需要的 jar 包
conf: 存放一个重要的配置文件,maven 的核心配置文件/全家配置文件---> settings.xml 文件
自定义安装Maven
在 maven.Apache 官网中下载到 meven.zip 文件,解压完成后,需要配置环境变量,同时需要一个 .m2 文件夹,如果没有该文件夹,我们在 cmd 命令 执行 mvn help:system 命令,执行完该命令会发现目录下自动创建了.m2 文件目录
Maven仓库
Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服务。
仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,得益于 Maven的坐标机制,任何 Maven 项目使用任何一个构件的方式都是完成相同的。
Maven 可以在某个位置统一存储所有Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或部署到仓库中,供其他项目使用。
对于 Maven 来说,仓库分为两类,本地仓库和远程仓库。
远程仓库
不在本机中的一切仓库,都是远程仓库: 分为中央仓库 和 本地私服仓库
远程仓库指通过各种协议如:file:// 和 http://访问的其他类型的仓库,这些仓库可能是第三方搭建的真实的远程仓库,用来提供它们的构件下载(例如 repo.maven.apache.org和uk.maven.org是Maven的中央仓库)。其他 远程 仓库可能是你的公司拥有在建立在文件或HTTP服务器的内部仓库(不是Apache 的那个中央仓库,而是你们公司的私服,你们自己在局域网中搭建的 maven仓库),用来在开发团队间共享私有构件和管理发布的.
默认的远程仓库使用的 Apache 提供的中央仓库 http://mvnrepository.com
本地创库
本地仓库指本地的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件
配置
在 settions.xml 文件中配置本地仓库
打开 setting.xml 配置文件
<localRepository>本地仓库在硬盘中的位置</localRepository>
在 settions.xml 文件中配置镜像仓库
如果仓库 A 可以提供仓库 B 存储的所有内容,那么就可以认为A是B的镜像。例如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。这是,我们可以使用阿里云提供的 镜像 http://maven.aliyun.com.nexus/content/grounps/public/来替换中央仓库 http://repol.maven.ort/maven2/ 修改 maven 的 setting.xml 文件
<mirror>
<!-- 指定镜像ID(可自定义名称) -->
<id>nexus-aliyun</id>
<!-- 匹配中央仓库(阿里云的仓库名称,不可以自己起名,必须这样写) -->
<mirrorOf>central</mirrorOf>
<!-- 指定镜像名称(可定义名称) -->
<name>Nexus aliyun</name>
<!-- 指定的镜像路径(镜像地址) -->
<url>http://maven.aliyun.com/nexus/content/grounps/public/</url>
</mirror>
优先级别
本地仓库 --> 到配置文件中指定的仓库中 --> 如果没有配置镜像仓库,就会去到中央仓库中找(如果配置了镜像仓库就会到镜像仓库中找,如果镜像仓库中没有,再去默认的中央仓库)
JDK的配置
如果你的 idea 中有多个 jdk的时候,就需要指定你的编译和运行的 jdk:
在 settings.xml 中配置
<profile>
<!--
settings.xml 中的 id 不能随便起的
告诉maven我们使用的是 jdk1.8
-->
<id>jdk1.8</id>
<!-- 开启编译器的使用 -->
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<!-- 配置编译器信息 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
注:配置的前提是 idea 中要有对应的 jdk
Maven 工程类型
POM工程
POM工程是逻辑工程 ,用在父级工程或聚合工程中,用来做 jar包的版本控制
该工程更多是起到管理作用,该工程中不能写逻辑性代码和业务性代码
JAR 工程
将会打包成 jar,用作jar包使用,即常见的本地工程 --- > Java Project
WAR 工程
将会打包成 war,发布在服务器上的工程
Maven项目的目录结构
src/mian/java:该目录下存储的是 Java源代码
src/mian/resources:存储主要的资源文件,比如 xml 配置文件和properties 文件
src/test/java:存储测试用的类,比如 JUNIT的测试一般就放在这个目录下面,因为测试类本身就不属于项目的,所以放在任何一个包下都显得很尴尬,所以 maven 专门创建了一个测试包,用于存放测试的类
src/test/resources:可自己创建存储测试环境使用资源文件
src:包含了项目所有的源代码和资源文件,以及其他项目相关的文件
target:编译后内容放置的文件夹 如 .class文件
pom.xml:是Maven的配置文件,配置项目和项目之间的关系,包含配置依赖关系等等
注:在 Maven 创建的项目中的包名不要随便更改
Maven中的常见命令
install : 本地安装,包含编译,打包,安装到本地项目
编译 - javac: 打包 jar,将 java 代码打包为 jar 文件
安装到本地仓库 ,将打包的 jar 文件,保存到 本地仓库目录中
clean : 消除已编译信息。删除工程中的 target 目录
compile : 只编译,javac 命令
package: 打包,包含编译,打包两个功能
package 和 install 的区别:
package 命令完成了项目编译,单元测试,打包功能,但没有把打包好的可执行 jar 包 (war 包或其他形式的包) 部署到本地 maven 仓库和 远程 maven私服仓库
install 命令完成了项目编译,单元测试,打包功能,同时把打包好的可执行 jar 包 (war 包或其他形式的包)部署到本地 maven 仓库,但没有部署到远程 maven 私服仓库