本文主要是介绍MAVEN【我的第一张博客,炮打四灵部】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MAVEN-项目管理专家
Maven是什么?
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven最突出的作用就是 管理项目生命构建周期,管理项目中的jar包,管理项目的起初信息(文档管理,测试报告…)
Maven打包项目的目录结构的约定
└─src 源码├─main 主要的代码目录│ ├─java 存放java源码│ │ │ └─resources 资源: 配置文件└─test 测试相关
pom.xml 项目的基本信息和相关配置
Maven的生命周期
Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
POM
Pom是指 Project Object Model。POM是一个xml,在Maven里为pom.xm;。是Maven工作的基础,在执行task或者goal时,Maven会去项目的根目录下读取pom.xml获的需要的配置信息。
POM文件中包含了项目的信息和maven build项目所需的配置信息,通常由项目信息(如版本,成员),项目的依赖,插件和goal,build选项等。
POM是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的POM需要指定父模块的POM。
坐标
在Maven世界中,每个工程都有它唯一的 组织名、模块名、版本 ,这三个就是maven项目的坐标,一个maven工程可以打包成jar、war、pom等形式,但是它们都是拥有上述三个坐标的。我们在项目过程中导入的jar包就是通过上述坐标值唯一确定的。因此,我们在创建一个maven工程时会要求指定具体的 组织名、模块名、版本、打包方式。
<groupId>公司网址反写.项目名</groupId>
<artifactId>项目名-模块名</artifactId>
<version>大版本.分支版本.小版本号+版本类型</version>
<packaging>打包方式</packaging>
依赖传递
传递性依赖是Maven2.0的新特性。假设你的项目依赖于一个库,而这个库又依赖于其他库。你不必自己去找出所有这些依赖,你只需要加上你直接依赖的库,Maven会隐式的把这些库间接依赖的库也加入到你的项目中。这个特性是靠解析从远程仓库中获取的依赖库的项目文件实现的。一般的,这些项目的所有依赖都会加入到项目中,或者从父项目继承,或者通过传递性依赖。
Maven的依赖传递满足最短路径原则和优先声明原则。
例如: A->B->C(0.2) A->C(0.1) 因为A->C(0.1)路径较短,所以会选择0.1版的C作为依赖。
A->B->C(0.2) A->D->C(0.1) 因为A->B->C(0.2)先传递依赖,所以会选择0.2版的C作为依赖。
依赖类型与打包与范围
Repositorries-仓库
Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
仓库优先级:
本地仓库(local)->私服镜像(aliyun)->中央仓库central
Maven常用命令
mvn compile 编译源代码
mvn test 运行源代码
mvn clean 清除目标目录中的生成结果
mvn package 将项目打包称jar/war文件
mvn install 在本地Repository中安装jar
mvn clean install 删除已有在编译
mvn archetype:genate 生成maven项目结构
这篇关于MAVEN【我的第一张博客,炮打四灵部】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!