maven作用:
1.依赖管理,下载,版本控制
2.构建项目:完成项目代码的编译,测试,打包,部署
软件工程依赖管理工具,帮我们管理依赖的
好像这样回答是很low
复制了一个jar包,看看jar包里是什么
右键解压文件
就是编译过的.class文件
官网地址:Maven – Welcome to Apache Maven
maven:
1)maven可以管理jar文件
2)自动下载jar和他的文档,源代码
3)管理jar的依赖. 比如A.jar需要B.jar,maven会自动下载B.jar
4)管理需要的jar版本
5)编译程序,把.java编译成.class
6)打包项目文件,形成jar或者war
构建:
1.清理,把之前项目编译的.class删除,为新的编译代码做准备
2.编译.把程序源代码编译为可执行代码.class.是批量的. 而javac命令只能编译一个文件
3.测试.maven可以执行测试程序代码,批量的验证功能是否正确.
4.报告.生成测试结果的文件
5.打包.将项目中所有的.class文件.配置文件等压缩放到一个压缩文件中.这个压缩文件就是项目的结果文件.通过java程序.压缩文件是.jar扩展名的.对于web应用.压缩文件扩展名是.war
maven能够实现自动化构建.核心maven的9个核心概念
1.POM:一个文件 名称为pom.xml,pom翻译过来叫项目对象模型
2.约定的目录结构:maven项目的目录和文件的位置都是规定的
3.坐标:是一个唯一的字符串,用来表示资源
4.依赖管理:管理项目中用到的jar文件
5.仓库管理:资源存放位置
6.生命周期:maven工具构建项目的过程就是它生命周期
7.插件和目标:执行maven构建的时候用的工具叫插件
8.继承
9.聚合
学习maven:使用maven命令 在idea中直接按键使用来代替maven命令
maven的安装和配置
1)下载maven安装包
2.下载后.解压到非中文目录
3.配置环境变量.
在系统的环境变量中,指定一个M2_HOME的名称,一般写M2_HOME或MAVEN_HOME,指定它的值是maven工具安装目录 然后将MAVEN_HOME配置到Path里 指向bin目录
4.验证是否配置成功
window+r cmd 然后命令 mvn -v
注意maven本身用java写的 运行 需要jdk所以需要提前安装配置好JDK
关于JDK安装 和maven一样 环境配置 JAVA_HOME指定jdk安装路径
想起点java小知识
1) JVM: java虚拟机
加载.class并运行.class
2) JRE: java运行环境
除了包含JVM以外,还包含了运行java程序所必须的环境
JRE = JVM+java系统类库(小零件)
3) JDK: java开发工具包
除了包含JRE以外,还包含了开发java程序所必须的命令工具
JDK=JRE+编译、运行等命令工具
结论:
1) 运行java程序的最小环境为JRE
2) 开发java程序的最小环境为JDK
关于Maven项目(工程)约定目录结构
Maven约定目录结构.
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
--/src
------/main #存放主程序java代码和配置文件
------------/java #程序包和包中的java文件
------------/resource #java程序中要使用的配置文件
------/test #测试程序的代码文件(可以没有)
------------/java #测试程序包和包中的java文件
------------/resource #测试程序中要使用的配置文件
-----/pom.xml #maven的核心文件(maven项目必须有)
一个pom.xml文件 注意将maven-01改为Hello 因为当时都是手动敲的,不然后面clean时找不到项目找不到 要和项目名(或模块名相同)
改成这样的
不是说项目就是个文件吗
以文件形式写一下 新建一个Hello文件
里面有src和pom.xml
src里有main和test
main和test里都有java和resources
这样我们大概的项目结构基本就清楚了
写个程序,那么应该写在Hello--->src---->main---->java包下 就按包名一层层建
HelloMaven里的内容
进入Hello项目 其实执行· mvn compile命令 也必须在pom.xml文件当前目录下执行
不然maven不认识
cmd
第一次使用maven的话 需要下载很多东西
target称为结果目录 mvn compile命令后的产物
cmd运行下试试 注意 到classes目录下运行
关于第一次使用maven下载东西的原因:需要很多插件(java类---jar文件)
第一次使用maven执行 mvn compile命令
会有
Downloading:https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom这样的提示
https://repo.maven.apache.org 是maven中央仓库地址
www.mvnrepository.com 是搜索使用的中央仓库 有什么不同自己点开对比下
下载的东西放在哪里,一般没有特别指定的话会放在c盘用户 .m2下repository里
默认的仓库(本机仓库)C:\Users\user\.m2\repository 可以改
一般C盘不建议 主要C盘东西放多了 卡
设置本机存放资源的目录位置
1.修改maven的配置文件,maven安装目录/conf/settings.xml(最好先备份)
2.修改localrepository
打开setting文件
注意不要使用中文目录(命名随自己喜欢)我自己这里斜杠好像写成\了 但是好像不影响哈哈.还是改改好
Maven里的仓库概念
上面讲的本地仓库,maven会将需要的依赖下载下来,存放在本地仓库,这样下次需要,如果本地仓库里有,就不需要再次下载
第一次使用mvn compile命令编译慢原因就是本地仓库没有需要的依赖,以后就很快了
maven仓库里存放的是maven编译需要的的jar(插件)和项目需要的jar
maven仓库的分类:
1.本地仓库:个人计算机上存放jar包的文件夹
2.远程仓库:在互联网上的,需要联网才可以使用
2.1)中央仓库.最权威的,所有开发人员共享集中的仓库 https://repo.maven.apache.org
2.2)中央仓库镜像:中央仓库的备份.各大洲,重要城市都有镜像.
2.3)私服:公司内部.局域网中使用.
3.仓库的使用:
比如需要mysql驱动,maven首先查本地仓库,有则直接使用,没有访问私服,有则直接使用,没有访问镜像,有则直接使用,再没有访问中央仓库,还没有那就拜拜。
所有下载的jar包都会存放到本地仓库,那么下次无需再次下载
pom.xml文件是maven的灵魂. POM Project Object Model项目对象模型.Maven把一个项目的结构和内容抽象成一个模型.在xml文件中进行声明.方便构建和描述.
pom.xml里的标签初识
<modelVwesion> Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0
坐标:下面三个合起来称为坐标
<groupId> 组织id,一般是公司域名倒序.例如com.hrui或者加项目名 com.hrui.maven
<artifactId> 项目名称,也是模块名称.对应groupId中项目中的子项目
<version> 项目的版本号,如果项目还在开发中,是最不稳定的,通常在版本后面带
-SNAPSHOT表示不稳定 哈哈哈 一般version使用三位数字标识比如 1.1.0
<Packaging> 项目打包的类型,可以使用jar,war,rar,ear,pom,默认是jar包 web应用是war 可以不写就是jar包
www.mvnrepository.com 是搜索使用的中央仓库 使用groupId或者artifactId作为搜索条件
依赖:maven的一个重要作用就是管理jar包,为了项目可以构建和运行.项目中可能依赖很多其他jar包. 也算是一种需要依赖的说明
<dependencies>
<dependency>
<groupId>com.hrui.maven</groupId>
<artifactId>maven-01</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
比如 注意将maven-01改为Hello 要和项目名(或模块名相同) 因为当时都是手动敲的,不然clean找不到
idea自带了maven 自己也可以指定 配置本地仓库放jar
到本地仓库目录
找mysql
可以看出 包名也是依次对应的
<properties>用来配置属性:例如 project.build.sourceEncoing项目构建源码编码方式,可以设置为utf-8
<build> 用来构建
<parent> maven中,如果多个模块都需要声明相同配置,例如groudId version 有相同依赖或者相同的组件配置等,用parent声明继承父工程的pom
<moudles>在Maven的多模块开发中,为了统一·构建整个项目的所有模块,可以提供一个额外模块.该模块打包方式为pom,并在其中使用·moudles聚合其他模块,这样通过本模块可以一键自动识别模块间的依赖关系来构建所有模块,叫Maven的聚合
Maven对功能提供了命令:
mvn clean:清理,会删除原来编译和测试的目录,但是已经install到仓库的包不会删除
mvn compile:编译程序,将src main 下的.java文件生成.class文件且将配置文件打包
mvn test-compile:将test测试包下的编译
mvn test:会生成一个目录surefire-reports保存测试结果
mvn package:打包主程序会根据pom.xml文件配置将程序打包成jar包或者war包
mvn install:将项目打包,且安装工程坐标保存到本地仓库
mvn deploy:会把工程打包,且按坐标保存到本地仓库,并且还会保存到私服仓库.还会自动把项目部署到wen容器中 -----------------没试过
这些命令需要在pom.xml当前文件所在文件目录执行