maven
一、 maven介绍
1、什么是maven?
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑
2、maven的作用?
(1)maven的依赖管理
maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar包的坐标
(2)项目的一键构建
我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。
一键构建 指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
二、 maven仓库
1、maven仓库的分类
(1)本地仓库
(2)远程仓库(私服)
(3)中央仓库:在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件
2、maven工程的认识
三、 maven常用命令
1、compile(编译命令)
mvn compile 作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下
2、test(测试命令)
mvn test 会执行 src/test/java 下的单元测试类
3、clean(清理命令)
mvn clean 作用会删除 target 目录及内容
4、package(打包命令)
mvn package 对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包
5、install(安装命令)
mvn install 将 maven 打成 jar 包或 war 包发布到本地仓库【 从运行结果中,可以看出: 当后面的命令执行时,前面的操作过程也都会自动执行 】
6、deploy
mvn deploy 将 maven 打成 jar 包或 war 包并上传到私服
四、 pom
1、坐标的书写规则
groupId包名
artifactId 项目名或模块名
version 版本号
2、如何添加坐标
(1)从互联网搜索
(2)去项目所在私服查
(3)在本地仓库搜索
3、pom基本配置
<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :包名
<artifactId > :项目名或模块名
<version > :产品的版本号
<packaging > :打包类型,一般有 jar、war、pom 等【jar:执行 package 会打成 jar 包war:执行 package 会打成 war 包pom :用于 maven 工程的继承,通常父工程设置为 pom】
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。
4、依赖范围
5、依赖传递
依赖范围对传递依赖的影响
是因为没有 junit.jar 引起的!为什么会这样呢?我们 ssm_dao 模块中有 junit 依赖而
ssm_service 模块依赖了 ssm_dao,难道 junit 不应该传递过来吗?
ssm_dao 依赖 junit,scop 为 test
ssm_service 依赖 ssm_dao
6、依赖冲突的解决
排除依赖
<dependency>
<groupId>com.pt.poseidon.cache</groupId>
<artifactId>poseidon-cache</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
五、 分模块构建工程
什么是继承?
将重复的配置提取出来在父工程的 pom.xml 中定义
什么是聚合?
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。
六、maven私服
1、什么是私服?
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内
部的 maven 远程仓库,
2、仓库类型
【1】 hosted,宿主仓库,部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部
分,Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
【2】 proxy,代理仓库,用于代理远程的公共仓库,如 maven 中央仓库,用户连接私服,私
服自动去中央仓库下载 jar 包或者插件。
【3】group,仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己的 maven 连接仓
库组。
【5】virtual(虚拟):兼容 Maven1 版本的 jar 或者插件