简介:
Java构建工具的关键功能之一是依赖关系管理,我们要在自己的项目中使用某个第三方库,并且构建工具将负责在构建生命周期中的正确时间下载它并将其添加到类路径中。
Maven作为构建工具已经存在了很长时间,它稳定并且在Java社区中仍然很受欢迎。
Gradle在很早以前就已经成为Maven的替代品,它严重依赖于Maven依赖项基础结构,但是提供了一种更加灵活的声明依赖项的方法。
什么是范围/配置?
Maven pom.xml文件或Gradle build.gradle文件指定从我们的源代码创建软件工件的必要步骤。例如,此工件可以是JAR文件或WAR文件。
在大多数不平凡的项目中,我们都依赖第三方库和框架。因此,构建工具的另一任务是管理对这些第三方库和框架的依赖关系。
假设我们要在代码中使用SLF4J日志记录库。在Maven pom.xml文件中,我们将声明以下依赖关系:
org.slf4j
slf4j-api
1.7.26
compile
在Gradle build.gradle文件中,相同的依赖性如下所示:
implementation 'org.slf4j:slf4j-api:1.7.26'
Maven和Gradle都允许定义不同的依赖组。这些依赖项组在Maven中称为“范围”,在Gradle中称为“配置”。
这些依赖项组中的每一个都有不同的特征,并以不同的方式回答以下问题:
在构建生命周期的哪些步骤中将提供依赖关系?可以在编译时使用吗?在运行时?在测试的编译和运行时?
依赖关系是可传递