Gradle - 依赖

Gradle - 依赖 首页 / Gradle入门教程 / Gradle - 依赖

Gradle构建脚本描述了构建项目的过程。大多数项目都不是独立的。他们需要一些文件来编译和测试源文件。例如,要使用Hibernate,无涯教程必须在类路径中包含一些Hibernate JAR。 Gradle使用一些独特的脚本来管理依赖项,需要下载它们。

依赖项用于辅助任务,例如项目所需的JAR文件和外部JAR。每个依赖项都应用于指定的范围。例如,依赖项用于编译源代码,其中一些将在运行时可用。 Gradle在配置的帮助下表示依赖项的范围,并且唯一的名称可以识别每个配置。大多数Gradle插件都支持项目的预定义配置。

Gradle考虑了构建和发布项目的结果。发布基于定义的任务。它可以将文件复制到本地目录或将其上传到远程Maven或Lvy存储库。可以在同一多项目构建中使用来自另一个项目的这些文件。发布任务的过程称为发布。

依赖配置

依赖关系配置是一组依赖关系和工件。以下是配置的三个主要任务:

  • Declaring dependencies
  • Resolving dependencies
  • Exposing artifacts for consumptions

声明依赖(Declaring Dependency)

依赖性是任何项目的重要组成部分。必须声明一个依赖项才能使用它。依赖性配置是定义一组依赖性的过程。此功能用于声明外部依赖关系,希望从网络上下载这些依赖关系。

考虑下面的Hibernate-core依赖示例:

apply plugin: 'java.' 
repositories {
   mavenCentral()
}
dependencies {
compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
   testCompile group: 'junit', name: 'junit', version: '4.+'
}

可以在项目的不同阶段使用依赖项。这些阶段可以是:

Compile             -  在编译时,将使用编译项目生产源所需的依赖项。

Runtime            -  生产类在运行时使用这些依赖项。默认情况下,它还包含编译时依赖项。

Test Compile   -  编译项目的测试源需要这些依赖项。它还包含编译后的生产类和编译时依赖项。

Test Runtime  -  运行测试需要这些依赖项。它还包含运行时和测试编译依赖项。

解决依赖关系(Resolving Dependencies)

插件使用配置并获取已定义任务的输入。例如,Gradle项目使用Spring Web Framework jar文件,该文件必须从Maven Central下载。

Exposing Artifacts for COnsumption

该插件使用用于定义工件以供其他项目使用的配置。

依赖管理

软件项目是各种功能的集合,它很少孤立地工作。在大多数情况下,项目取决于库的可重用性。同样,一个项目可以分为单独的组件以形成一个模块化的系统。依赖性管理是一种以自动化方式声明,解决和使用项目所需依赖性的过程。下图演示了Gradle项目的结构。

无涯教程网

Gradle Dependencies

Gradle为依赖关系管理提供了内置支持。在Gradle中,依赖项管理由两部分组成。它们如下:

  • Gradle必须了解构建或运行项目的项目要求。这些文件被称为项目的依赖项。
  • Gradle需要构建和上传项目所产生的数据。这些文件是项目的声明。

在Gradle中,大多数项目不是独立的。项目需要由其他项目构建的文件进行编译或测试等。例如,如果要在项目中使用Hibernate框架,则在编译时需要在类路径中使用 hibernate jar文件。这些文件被称为项目的依赖项。在Gradle中,可以指定项目的依赖关系,Gradle着重于查找这些依赖关系并使之在项目中可用。可以从远程Maven或Ivy存储库中下载这些依赖项,或者可以在项目中构建依赖项并将其包括在内。此过程称为依赖性解析(dependency resolution)

依赖解决方案提供了优于Ant的优势。使用Ant,可以指定要加载的jar的绝对或相对路径。相对而言,在Gradle中,必须声明依赖项的名称来定义依赖项。另外,当无涯教程添加Apache Ivy时,Ant反映了类似的行为,因此在这种情况下Gradle更好。

项目本身的依赖关系表现为依赖关系。例如,在hibernate-core中,需要许多必须在类路径上可用的库。因此,当Gradle测试运行项目时,它会搜索依赖项并使之可用。这些依赖性称为传递性依赖性(transitive dependencies)

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

深入拆解Tomcat & Jetty -〔李号双〕

TypeScript开发实战 -〔梁宵〕

Swift核心技术与实战 -〔张杰〕

MongoDB高手课 -〔唐建法(TJ)〕

容器实战高手课 -〔李程远〕

爆款文案修炼手册 -〔乐剑峰〕

手把手带你搭建秒杀系统 -〔佘志东〕

编程高手必学的内存知识 -〔海纳〕

好记忆不如烂笔头。留下您的足迹吧 :)