Maven基础知识

2017-01-16  本文已影响0人  eugenewyj

[TOC]

Maven基础知识

核心概念

(Lifecycle)生命周期 -> (Phase)阶段 -> (Goal)目标

lifecycle是总任务,phase就是总任务分出来的子任务,但是这些子任务是被规格化的,它可以同时被多个lifecycle所包含,一个lifecycle可以包含任意个phase,phase的执行是按顺序的,一个phase可以绑定很多个goal,至少为一个,没有goal的phase是没有意义的。

Maven常用技巧

本地执行依赖检查

mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false

强制更新依赖的包

mvn clean install -e -U
# -e 详细异常
# -U 强制更新

跳过test

-Dmaven.test.skip=true

mvn help 插件

1、 mvn help:active-profiles      //列出当前构建中活动的Profile(项目的、用户的、全局的)
2、 mvn help:effective-pom        //显示当前构建的实际POM,包含活动的Profile
3、 mvn help:effective-settings   //打印出项目的实际 settings, 包括从全局的 settings 和用户级别 settings 继承的配置。
4、 mvn help:describe  -Dplugin=Compiler -Dmojo=compile -Dfull

依赖机制介绍

依赖传递

1、compile
默认的范围,compile依赖范围的artifacts在项目的所有classpath(compile, runtime, test)中都可以引用到,而且会传递给依赖的项目。
2、provided
更像compile,但是依赖的artifacts在JDK或容器中已经存在,发布时项目的classpath(runtime)中不会带上provided范围的artifacts。
3、runtime
编译项目是不需要此依赖artifacts,但是项目运行时(runtime, test)需要此依赖artifacts。
4、test
正常项目编译和运行不需要此依赖artifacts,只有编译和运行测试代码时才需要。
5、system
与provided类似,但是你必须明确提供此依赖artifacts,而且此依赖artifacts存于本地而不是maven仓库里。
6、import(2.0.9以后支持)
这个范围只用于<dependencyManagement>部分的pom类型的artifacts,它表示artifacts应该用他的POM的<dependencyManangement>中依赖artifacts的替换它。因为是替换,所以import范围的依赖不参与依赖仲裁中路径深度的计算。
上一篇下一篇

猜你喜欢

热点阅读