只是不愿随波逐流 ...|

lidongdongdong~

园龄:2年7个月粉丝:14关注:8

maven

1、基础

* 坐标
groupId 公司
artifactId 项目
version 版本
- SNAPSHOT 快照(snapshot)
- RELEASE 发行(release)
packing 打包方式
- jar
- war
- pom
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>

2、目录结构

* pom.xml------------------------------------------------------------这是 maven 要使用的当前项目的配置文件
* target ------------------------------------------------------------这是存储项目构建过程中产生的文件的(这个文件如果不存在会自动创建)
* src ------------------------------------------------------------这是项目的资源文件
|--main --------------------------------------------------------这是当前项目的正式文件
|-- java-----------------------------------------------存放的是正式的 java 文件
|-- resources------------------------------------------存放的是正式的配置文件
|-- webapp---------------------------------------------存放的是静态资源文件(image html css js jsp WEB-INF/web.xml)
|--test --------------------------------------------------------这是当前项目的测试文件
|-- java-----------------------------------------------存放的是测试的 java 文件
|-- resources------------------------------------------存放的是测试的配置文件(这个目录一般是没有的)

3、常见命令

* mvn compile # 编译 -> 将 src/main/java 下的文件(正式的 java 文件)编译为 class 文件输出到 target 目录下
* mvn clean # 清理 -> 删除 target 目录及内容,即清理掉上一次项目构建产生的文件
* mvn test # 测试 -> 执行 src/test/java 下的测试类,并编译为 class 文件输出到 target 目录下
* mvn package # 打包 -> 打的是所有的正式代码(src/main),对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包
* mvn install # 安装到本地仓库 -> 将打好 jar 包或者 war 包安装到本地 maven 仓库
* mvn deploy # 部署 -> 将打好的 jar 包或 war 包部署到私服中

4、生命周期

* 位于同一生命周期中的命令,运行后面的命令,前面的会自动运行
* maven 对项目构建过程分为三套相互独立的生命周期,每个生命周期中,都包含了不同的命令,这三套生命周期分别是
Clean Lifecycle (清理 生命周期): 在进行真正的构建之前进行一些清理工作
Default Lifecycle (默认 生命周期): 项目构建的核心部分,包括编译、测试、打包、安装、部署
Site Lifecycle (站点 生命周期): 生成项目报告,站点,发布站点

5、依赖范围

* 项目中的 jar 包如果很多, 就可能出现 jar 包冲突
* 比如: web 应用里有 servlet-api 的 jar 包,web 在 Tomcat 里运行也有 servlet-api 的 jar 包,那么在 Tomcat 启动时,就可能出现 jar 包冲突的
* 为了避免这种情况的发生,Maven 为每个依赖提供了作用范围,即: 依赖范围
* maven 支持的依赖范围主要有下面几种
compile 默认依赖范围,作用域在编译、测试、运行时都有效
test 作用域在测试时有效,编译和运行时不需要,比如: Junit
provided 作用域在编译、测试时有效, 运行时不需要,比如: servlet-api 被 tomcat 容器提供, servlet jsp
runtime 作用域在测试、运行时有效, 编译时不需要,比如: jdbc 的驱动包

image

6、依赖冲突

最先声明原则:在 pom 文件定义依赖,以先声明的依赖为准
最短路径优先原则:从依赖程序开始算起,到被依赖的程序,以路径短的为准

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE</version>
<!--赖排除:在引入一个依赖的时候,排除它的一些连带依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
posted @   lidongdongdong~  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开