Maven使用

maven:
基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、 告和文档的软件项目管理工具
下载maven访问maven.apache.org

maven目录结构:
bin目录:mvn运行的一些脚本,在Windows命令行输入命令时会调用。
boot目录:包含了一个类加载器的框架,maven使用它加载自己的类库。
conf:配置文件,setting.xml,log。
lib:包含了maven自身和第三方依赖的类库

配置环境变量:
   M2_HOME:maven主目录
   path 添加 :%M2_HOME%bin

检测安装:
     cmd: mvn -v 查看maven版本
 
maven常用命令:
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中

1、坐标(构件通过坐标作为其唯一标识)
groupId、artifactId、version
2、仓库:
本地仓库
远程仓库(全球中央仓库https://repo.maven.apache.org/maven2)
镜像仓库
/conf/setting.xml镜像仓库配置:

maven.net.cn

      alimaven
      central
      aliyun maven
      http://maven.aliyun.com/nexus/content/repositories/central/

3、修改本地仓库的位置

Ps:一旦配置了镜像仓库,那么先前的所有配置都会转到镜像仓库中。
 默认仓库位置.m2 repository,将settings.xml复制到更改后的本地仓库中,这样maven版本更新了,也不用修改settings.xml了
 
 
maven的三套生命周期:
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的工作
default 构建项目(最核心)
compile 编译
test 测试
package 打包
install 安装jar包到本地仓库中
site 生成项目站点
pre-site 生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上

pom.xml常用元素
modelVersion  指定了当前pom版本
groupId    反写的公司 址+项目名
artifactId  项目名+模块名
version     版本  第一个0表示大版本 ,第二个0表示大版本 ,第三个0表示大版本 0.0.1snapshot快照
packaging   打包方式 默认是jar

name       项目的描述名
url       项目的地址
description  项目描述
developers   开发人员信息
licenses    许可证信息
 
dependencies 
dependency
scope    依赖范围
optional  设置依赖是否可选
exclusion  排除依赖传递列表  

dependencyManagement   依赖管理  不会被运行
build   对构建行为提供相应支持
plugins  插件列表(指出坐标)
parent    对父模块的继承
modules   定义多个模块  一起进行编译
 
dependency scope:指定依赖范围
 –compiler:默认的范围,编译测试运行都有效
      –provided:编译测试时有效
      –runtime:测试和运行时有效
      –test:测试时有效
      –system:与本机系统相关联,可移植性差
      –import:导入的范围,只在dependencyManagement中使用,表示从其他的pom中导入dependency的配置
 

maven依赖:
1.建立依赖(A依赖B)
在A的pom.xml创建dependency,引用B的坐标就创建了A对B的依赖
2.间接依赖
A依赖B,B依赖C,A就间接依赖C
3.排除依赖(A依赖B,B依赖C,排除A对C的依赖)
在A对B的dependency定义下,使用exclusion引用C的坐标,就排除了A对C的依赖

依赖冲突
不同版本的构件
1.短路优先
2.先声明先优先:如果路径长度相同,则谁先声明,先解析谁

聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要Maven能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用这个标签。


   ../hongxin-bege
   ../hongxin-nange
   ../hongxin-shanji

继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM.XML。
1. packaging 改为pom。
2. dependencyManagement 中并不提取依赖,只进行统一管理。
3. property中定义了junit版本 ,之后可以引用。
4. 父类parent中的main和test没有意义,可以删除。

父类pom:

   
   
     junit
     junit
     ${junit.version}
   

 

子类pom:  com.hongxin
 hongxin-parent
 0.0.1-SNAPSHOT

   
     junit
     junit
   


 文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树Java概览Maven基础92745 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月6日
下一篇 2018年1月6日

相关推荐