Maven依赖
依赖配置
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--...-->
</dependencies>
-
依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
对于
Maven
项目,可能会出现不同版本的依赖,这种情况叫做
依赖传递冲突问题
依赖传递冲突问题
-
路径优先
:当依赖中出现相同的资源时,层级越深,优先级越低,
层级越浅,优先级越高
-
声明优先
:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的 -
特殊优先
:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
对外隐藏当前所依赖的资源
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<optional>true</optional>
</dependency>
排除依赖
主动断开依赖的资源,被排除的资源无需指定版本
<dependency>
<groupId>com.itheima</groupId>
<artifactId>project03</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖范围
依赖的
jar
默认情况可以在任何地方使用,可以通过
scope
标签设定作用范围
作用范围
-
主程序范围有限
main
文件夹范围内 -
测试程序范围有效
test
文件夹范围内 -
是否参与打包
package
指令范围内
依赖范围传递性
带有传递范围的资源在进行传递时,作用范围将受到影响
生命周期与插件
项目构建生命周期
Maven
构建生命周期描述的是一次构建过程经历的时间
compile
->
test-compile
->
package
->
install
Maven
对项目构建的生命周期划分为3套
-
clean
:清理工作-
pre-clean
:执行一些需要在
clean
之前完成的工作 -
clean
:移除所有上一次构建完成的文件 -
post-clean
:执行一些需要在
clean
之后立刻完成的工作
-
-
default
:核心工作,例如编译、测试、打包、部署等-
如果执行
compile
,那么包括
compile
之前的命令都会执行
-
如果执行
-
site
:产生报告,发布站点等-
pre-site
:执行一些需要生成站点文档之前完成的工作 -
site
:生成项目的站点文档 -
post-site
:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 -
site-deploy
:将生成的站点文档部署都特定的服务器上
-
生命周期控制的是在执行任务的过程,每个过程对应一个插件
插件
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
-
默认
maven
在各个生命周期上绑定有预设的功能 - 通过插件可以自定义其他功能
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
<phase>generate-test-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
版权声明:本文为qq_36178962原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。