开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:Maven的简介】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15962
Maven的简介
内容介绍:
一、Maven 是什么
二、Maven 的目录结构
三、Maven 与 pom 文件的关系
一、Maven 是什么
1.Maven 的两个作用
Maven 是阿帕奇下一个纯 JAVA 的开源项目,它主要是用来管理项目的构建,依
赖,以及生成报告和文档等步骤。
maven 是跟 IDE 无关的,所以无论在哪个 IDE 的平台上 maven 都提供了一样的操作接口,它最主要的作用第一个是自动构建。用来编译,打包英文程序,第二个是依赖管理用来管理我们在程序中所需要的架包,管理架包的方式是它提供了一个中央仓库和本地仓库,所以用 maven 管理架包不需要把它引入到工程中,只需要
在 maven 中去描述它需要什么样的架包, maven 会从中央仓库下载到本地仓库,
从本地仓库里关联到工程中。
2.架包的管理
所以架包曾经用过或本地仓库有则无需在中央仓库中下载,如本地无则需在中央仓库下载,本地的 maven 默认在每个用户的用户目录的 mr 目录下,如果在 maven 的架包出现混乱时,我们可以选择把用户目录 mr 目录删除,这
样 maven 会从中央仓库重新下载架包。
3.存放规定
对于在项目中的所有文件, maven 提供了一个标准的目录结构,这个目录结构规定我们的生产代码,测试代码放在什么样的目录下已及命名方式。这样所有的程序
员的协作工作时所有的东西都会按照一定的规定存放。
二、Maven的目录结构
1.Maven的两个目录结构
Maven 默认的目录结构是这样的,它主要分为两个目录:一个是 src所有的源代码以及资源文件都放底下、另一个是 target 目录所有编译代码以及所有的要用的资源
文件都会拷贝到target上。最后打出的架包和 war 包也在 target 中。
2、maven工程
除了两个目录外它还需要 pom文件,pom 文件位于整个根目录底下,所以从根目录进去看一个 maven 的工程就是一个 pom 文件和一个 src 文件,如果说经过编译
打包后还会出现一个 target 目录。
详细看 src 目录点开可以看见一个 main目录和一个 test 目录, main 目录是用来放生产代码和生产的资源文件, text 目录是用来放测试目录和测试的资源文件。
在 main 下可以看到 Java 目录夹和 resources 目录夹,所有的 Java 源代码都放在
了 Java 文件夹中,而 resources 文件夹放的是各样的配置文件以及静态文件。
Maven 的工程在编译时会把 resouces 目录里的文件和 Java 目录中间编译出的 classes 文件合并最后根据各自的目录结构拷贝到一起,打包形成架包或者 war
包,这个是 src 目录。
target 目录结构和 src 结构一样的, src 下放的是代码, target 放的是测试所用的
资源。这是 maven 标准的目录结构。
三、Maven与pom文件的关系
1、pom文件的作用
Maven 管理这么多东西但是它所有的信息都是管理在pom 文件中的。Pom 文件定义了项目的基本信息,描述了用户如何去构建打包。以及声明项目要引入多少这样的架包,也就是项目依赖。使用这样的pom 文件可以大大简化我们开发和构建的过
程,是的我们整个的项目管理与具体的ide 无关。
2、Autowiredemo 工程中的 pom 文件
Autowiredemo 工程的 pom 文件,它是一个非常简单的工程,其中的内容不多。
主要看 pom 文件的主要结构,在 Autowiredemo 的pom 文件中详细的展示了主要的标签注释。
首先看到的是一个标记,这个标记的文件是一个插面文件它的编码是 tf-8 来写的, pom 文件的内容都在 project 的标记里, project 的头不要去动它,下面的 model vision 也不动表示的版本是4.0,真正写的内容从后面开始,后面写的 parent 定义的是 pom 文件的继承关系,它可以继承负 pom 文件中的所有定义然后在当前 pom 文件中进行修改以及增加新的定义,在 parent 后我们看到了 groupid 和 artifactid ,这两个 id 合起来构成了这个工程唯一的标识,然后是它的版本号 version ,在每次发布新的版本都需要给它一个版本号,之后是它的描述信息,在后面是它的打包方式。
3.spring boot 功能的两种格式
对于 spring boot 的功能来说主要是两种格式,一种是带了 servelt 容器价格式,还有一种是不带 ervelt 容器的 war 格式。 War 包是需要把它部署到 servelt 的应用服务器里的。Packaging 后面可以看到 propertise 定义, propertise 定义是定义在pom 文件中会重复用到的一些词,所以这里用 propertise 定义是可以直接去引用 propertise ,当然我们可以在这里去设定一些 maven 的属性,这里可以看到我们设定一些工程构建时的正负极的格式tf-8, propertise 后看到的是依赖关系的定义, maven 的一个主要的工作是来管理工程中间所需要的架包,工程中间所需要的架包都在 dependencies 里,每一个 dependencies 都是一个独立的架包,
dependencies 后面看到的是一个构建的插件,我们知道 maven 是依赖于插件来完成各种功能的,所以需要用到哪个插件就在 plugin 里头把它写进去,
最后看到的 reposities 是仓库的定义,如果不叫这一部分的话用的是国外的中央仓库会使得我们的架包下载的比较慢,所以我们一般会定义一个国内的 maven 仓库
镜像,我们在这类中间看到的定义是阿里云的 maven 的仓库镜像。