前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站点击跳转浏览。
什么是maven
Maven 是一个项目管理工具,它包含了一个项目对象模、型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
maven能做什么
1,省去jar包的导入,而是坐标来进行导入,减少了项目的内存大小
2,更加方便的构建项目,实现项目的一键构建。指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建
Maven 仓库的分类
maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下图描述了 maven 中仓库的类型:
本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找默认本地仓库位置在user.dir/.m2/repository,{user.dir}/.m2/repository, {user.dir}表示 windows 用户目录
远程仓库:如果本地需要插件或者 jar 包,本地仓库没有, 默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
中央仓库 :在 maven 软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。
maven 的概念模型
Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
项目对象模型 (Project Object Model)
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、
插件目标等。
依赖管理系统(Dependency Management System)
通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,如下所示是 junit4.9的依赖定义:
一个项目生命周期(Project Lifecycle)
使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程, maven 将这些
过程规范为一个生命周期,如下所示是生命周期的各各阶段:
常用的 maven 命令
compile:编译
clean:清理
test:测试
package:打包
install:安装
坐标定义
在 pom.xml 中定义坐标,内容包括: groupId、 artifactId、 version,详细内容如下: <!--项目名称,定义为组织名+项目名,类似包名--> <groupId>cn.itcast.maven</groupId> <!-- 模块名称 --> <artifactId>maven-first</artifactId> <!-- 当前项目版本号, snapshot 为快照版本即非正式版本, release 为正式发布版本 --> <version>0.0.1-SNAPSHOT</version> <packaging > :打包类型 jar:执行 package 会打成 jar 包 war:执行 package 会打成 war 包 pom :用于 maven 工程的继承,通常父工程设置为 pom
pom 基本配置
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下: <project > :文件的根节点 . <modelversion > : pom.xml 使用的对象模型版本 <groupId > : 项目名称,一般写项目的域名 <artifactId > : 模块名称,子项目名或模块名称 <version > :产品的版本号 . <packaging > :打包类型,一般有 jar、 war、 pom 等 <name > :项目的显示名,常用于 Maven 生成的文档。 <description > :项目描述,常用于 Maven 生成的文档 <dependencies> :项目依赖构件配置,配置项目依赖构件的坐标 <build> :项目构建配置,配置编译、运行插件等。
结语
🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。
🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,
我们下期再见。