Maven
管理和构建 Java 项目的工具,同类的还有 Gradle、Ant 等
提供了什么:
- 标准化的项目结构
- 标准化的构建流程
- 编译 > 测试 > 打包 > 发布
- 依赖管理机制
标准项目结构
更快捷的编译,打包
依赖管理机制
直接在 pom.xml 中添加依赖坐标后会自动将 jar 包和插件部署在 lib 中
不再需要曾经的(下载,导入lib,添加到工作环境)繁琐步骤
Maven 内部控制机制
通过在 pom 文件中编辑项目所用的外部库,让 maven 去仓库找到 jar 包导入项目
仓库有:本地仓库、apache 中央仓库、远程仓库(类似私服的概念)
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的 jar 包:
- 如果有,则在项目直接引用;
- 如果没有,则去中央仓库中下载对应的 jar 包到本地仓库。
如果搭建了远程仓库,则访问顺序为:
本地仓库>远程仓库>中央仓库
发现远程仓库没有,会从中央仓库下载到远程仓库之后,再下载到本地仓库
配置和命令
在 /conf/setting.xml 中
本地仓库
<localRepository>D:\Work\Environment\maven-repository</localRepository>
配置远程仓库
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
常见命令
命令 | 功能 |
---|---|
mvn compile | 编译生成再target中 |
mvn clean | 清除编译文件 |
mvn package | 打包(jar,war) |
mvn test | 运行测试 |
mvn install | 把生成的包放入本地仓库 |
三套生命周期
同一生命周期内,执行后边的命令,会先自动执行前面的命令
比如 compile > test > package > install 这一套中
执行 mvn install 会自动执行 compile > test > package
Maven 坐标
- groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itheima)
- artifactld:定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service)
- version:定义当前项目版本号
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
依赖作用范围
<!-- 编译时有效 -->
<scope>compile</scope>
<!-- 测试环境有效 -->
<scope>test</scope>
<!-- 测试和运行环境有效 -->
<scope>runtime</scope>
<!-- 编译和测试有效,运行无效,打包时不会包含 -->
<scope>provided</scope>
<!-- 编译和测试有效,运行无效 -->
<scope>system</scope>
常见的 servlet 作用范围,设置为 provided 避免和 Tomcat 发生冲突
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
标签:仓库,jar,笔记,Maven,本地,远程,mvn
From: https://www.cnblogs.com/libayu/p/17298086.html