![2a878995e3fb887b1f7424e636d64ae7.png](https://i-blog.csdnimg.cn/blog_migrate/a6447e090e715bb3f50aa6dacb5c9578.jpeg)
Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。
提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用
最强大的功能就是能够自动下载项目依赖库。
2.主要方式
处理编译,分配,文档,团队协作和其他任务的无缝连接。
- Builds
- Documentation
- Reporting
- Dependencies
- SCMs
- Releases
- Distribution
- mailing list
3.目标
Maven主要目标是提供给开发人员:
- 项目是可重复使用,易维护,更容易理解的一个综合模型。
- 插件或交互的工具,这种声明性的模式。
Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。
二:标签
1.maven中的groupId和artifactId
使用maven做项目管理。
groupId一般是域名的反写,也作为项目中类的包名,artifactId是工程名,也就是根文件夹名。
Maven 的工程类型
POM 工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。
jar 将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。
war 将会打包成 war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程
Maven项目结构
src/main/java 这个目录下储存 java 源代码
src/main/resources 储存主要的资源文件。比如spring的xml配置文件和log4j的properties 文件。
src/test/java 储存测试用的类,比如 JUNIT 的测试一般就放在这个目录下面
src/test/resources 储存测试用的资源文件
src 包含了项目所有的源代码和资源文件,以及其他项目相关的文件。
target 编译后内容放置的文件夹
pom.xml 是 Maven 的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等 等
依赖
<dependencies>
<!-- 定义一个具体的依赖 --> <dependency>
<!-- 依赖的工程所在组名 --> <groupId>groupName</groupId> <!-- 依赖的工程名 --> <artifactId>artifactName</artifactId> <!-- 依赖的工程版本 --> <version>versionNo</version>
<!-- 依赖的工程有效范围,其可选值有: compile - 编译中有效
runtime - 运行中有效
system - 全部中有效[默认]
provided - 当前工程中有效.
test - 只在测试有效 -->
<scope>system</scope> </dependency>
</dependencies>
依赖关系
即 A 工程开发或运行过程中需要 B 工程提供支持,则代表 A 工程依赖 B 工程。在这种 情况下,需要在 pom.xml 文件中增加下属配置定义依赖关系
继承
如果 A 工程继承 B 工程,则代表 A 工程默认依赖 B 工程依赖的所有资源,且可以应用 B 工程中定义的所有资源信息。被继承的工程(B 工程)只能是 POM 工程。
聚合
当我们开发的工程拥有 2 个以上模块的时候,每个模块都是一个独立的功能集合。比如 某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。
在创建聚合工程的过程中,总的工程必须是一个 POM 工程(Maven Project),各子模 块可以是任意类型模块(Maven Module)。所有聚合工程和聚合模块必须处于同一个组 (groupId)中,且聚合工程可以嵌套。
Maven 常用命令
- 1 install
本地安装, 包含编译,打包,安装到本地仓库
编译 - javac
打包 - jar, 将 java 代码打包为 jar 文件
安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。
- 2 clean
清除已编译信息。 删除工程中的 target 目录。
- 3 compile
只编译。 javac 命令
- 4 deploy
部署。 常见于结合私服使用的命令。
相当于是 install+上传 jar 到私服。 包含编译,打包,安装到本地仓库,上传到私服仓库。
- 5 package
打包。 包含编译,打包两个功能。