maven是什么
不仅仅是个构建工具,还是一个依赖管理工具和项目信息管理工具;
maven项目的核心是pom.xml文件,定义了项目如何构建,声明项目的依赖。
maven 命令
clean 清理
compile 编译
package 打包
install 安装
deploy 发布
依赖
根据坐标(gav)定位依赖
<dependency> <groupId>com.jiaxin.risk</groupId> <artifactId>risk-web</artifactId> <version>1.0.0</version> <scope>compile</scope> </dependency>
依赖范围
compile 编译依赖
test 测试依赖 (比如JUnit)
provided 已提供依赖 编译、测试有效,运行时无效(由于容器已提供,不需要重复引入,比如servlet api)
runtime 运行时依赖,测试、运行时有效,编译无效(如JDBC驱动实现,项目编译只需要JDBC提供的接口,执行测试和运行才需要具体实现)
system 系统依赖,通过systemPath指定依赖文件,不通过maven仓库解析,往往与本机绑定(本地的,Maven仓库之外的类库文件)
依赖性传递
maven 生命周期
clean 目的是清理项目,包含 pre-clean clean post-clean
default 定义了真正构建时所需要执行的所有步骤
site 目的是建立和发布项目站点
maven插件目标参数配置
在maven中使用-D参数,并伴随一个参数键=参数值的形式,来配置插件目标的参数
mvn instal -Dmaven.test.skip = true
module 与 parent 聚合与继承
聚合
<groupId>com.jiaxin.risk</groupId>
<artifactId>risk-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>risk-web</module>
<module>risk-core</module>
<module>risk-api</module>
</modules>
继承
<parent>
<artifactId>risk-parent</artifactId>
<groupId>com.jiaxin.risk</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
作为父模块的pom,其打包类型也必须为pom;
元素relativePath表示父模块pom的相对路径,默认路径是../pom.xml,也就是父pom在上一层目录下;
maven会首先根据relativePath检查父pom,如果找不到,在从本地仓库找;
可继承的pom元素:
groupId 项目组id
version 项目版本
description 项目描述信息
properties 自定义的maven属性
dependencyManagement 项目的依赖管理配置
repositories 项目的仓库位置
build 包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
依赖管理
<dependencyManagement></dependencyManagement>
dependencyManagement元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。在dependencyManagement元素下的依赖声明不会引入实际的依赖,它可以约束dependencies下的依赖使用
插件管理
<pluginManagement></pluginManagement>
在该元素中配置的依赖不会造成实际的插件调用行为,当pom中配置了真正的plugin元素,并其groupId和artifactId与
pluginManagement中配置的插件匹配时,pluginManagement的配置才会影响实际的插件行为
私服
私服是一个特殊的远程仓库,它是架设在局域网内的仓库服务,当Maven需要下载构建的使用,它先从私服请求,如果私服上没有的话,则从外部的远程仓库下载,然后缓存在私服上,再为Maven的下载请求提供服务