gradle学习之旅(十) 依赖声明

gradle项目的依赖类型

依赖API

上图是项目、依赖处理器、依赖 的类图表示

  • gradle项目有一个DependencyHandler实例,通过getDependencies()方法来取得引用。
  • 声明依赖需要通过dependencies配置块中的依赖处理器方法来声明
  • 每个依赖都是一个Dependency类型的一个实例,group、name、version、classifier属性明确的标识了一个依赖。

外部模块依赖

gradle中,外部类库通常以JAR文件的形式存在,被称为外部模块依赖。这种类型依赖的特点是在仓库中能够通过属性明确地标识。

依赖属性

  • group:通常用来标识一个组织、公司、或项目。group可以用点标记法,但非强制,如org.hibernate。
  • name:一个工件的名称,唯一描述了依赖。
  • version:一个工件可以有不同版本
  • classifier:有时一个工件会定义这个属性,来区分具有相同group、name、version属性的工件,但他需要进一步规范,比如说根据运行时环境来定义。

    依赖标记

  • 依赖声明语法
    dependencies{
    configurationName dependencyNotation1,dependencyNotation2,...
    }
  • dependencyNotation的格式
    • group:groupString, name:nameString, version:versionString
    • "groupString:nameString:versionString"

使用外部模块依赖需要在repositories配置快中添加仓库。

依赖检查报告

使用gradle dependencies运行dependencies help task时,会显示出当前项目完整的依赖树,依赖树显示了在构建脚本中声明的顶层依赖以及它们的传递性依赖。

  • 标有*号的依赖表示被排除
  • 针对版本冲突Gradle默认的解决策略是获取最新的版本。

    排除传递性依赖

    Gradle可以完全控制传递性依赖。

  • 排除一个依赖,可以通过快捷或map标记来声明排除依赖。比如:

    dependencies {
    cargo(‘org.codehaus.cargo:cargo-ant;1.3.1‘){
        exclude group: ‘xml-apis‘ , module: ‘xml-apis‘
    }
    }
  • 排除虽有传递性依赖
    dependencies {
    cargo(‘org.codehaus.cargo:cargo-ant;1.3.1‘){
        transitive = false
    }
    }

    动态声明版本

    在声明依赖时将版本号写为1.+,就会获取依赖类库的最新的1.X版本

文件依赖

依赖于文件系统上的文件,无需声明仓库

语法如下

dependencies {
    compile fileTree(dir:dirString , include: ‘*.jar‘)
}

这样便可依赖dirString目录下的一系列jar。

时间: 2024-10-03 19:28:14

gradle学习之旅(十) 依赖声明的相关文章

gradle学习之旅(九) 依赖配置

包括本节的接下来三节中分别学习gradle依赖管理中是三个重要感念:依赖配置.依赖声明.仓库配置和使用 什么是配置 配置就是依赖的配置 插件可以引入配置来定义依赖的作用域(第四节的java插件),比如java插件通过compile配置添加编译产品源代码所需的依赖. 配置的API表示 配置可以直接在项目的根级别添加和访问,可以直接使用插件提供的配置,也可以声明自己的配置. 类似于taskContainer,每个项目也有一个ConfigurationContainer类的容器来管理相应的配置 配置在

gradle学习之旅(十二) 本地依赖缓存与解决依赖问题

本地缓存的结构 本地缓存中用来存储依赖的Gradle根目录是<USER_HOME>/.gradle/caches 缓存实际上被分为两个部分,包括从仓库下载的原始二进制文件和已下载工件的元数据 gradle缓存特性 gradle会将依赖工件的来源存储在缓存中,当仓库中的结构发生变化,会自动调整,使得新的构建更可靠 工件变化检测,项目依赖元数据被存储在缓存中,避免每次运行构建时都对仓库进行检查 集成本地仓库,避免对远成仓库频繁访问 通过比较本地和远程的校验来检测仓库中的工件是否发生变化,无变化工件

gradle学习之旅(四) 使用gradle构建简单的java web项目

本节通过一个简单的javaweb项目来体会gradle的使用 需求 构建一个javaweb项目,搭建jsp+servlet开发环境 可以将需求分解为两步: 使用gradle构建一个java项目 为该项目构建web视图层 工具 gradle4.3 idea jdk 1.8 实验过程 首先在idea中创建一个空的gradle项目 创建如下目录-文件结构 在构建脚本中写入如下内容 group 'com.shy' version '1.0-SNAPSHOT' apply plugin:'java' ap

WCF学习之旅—实现支持REST客户端应用(二十四)

WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持REST的WCF服务端程序,本文介绍如何调用上一篇文章介绍的RestFul服务端. 五.Windows客户端调用 为了强调REST的通用性,客户端不用WCF的形式调用服务,而是采用HttpWebResponse通过编程方式直接访问,消息格式我们选XML. 首先,我们使用C#来封装一个RestHelper类

Android Gradle编译学习日记之二(使用 Gradle 编译 Eclipse,引入依赖资源以及迁移 Android Studio)

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 Android Gradle编译学习日记(基于 Android Studio 1.0): Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用) 在上一篇文章中,我简单介绍了一个 Gradle 环境变量的搭建,以及如何使用 Gradle 编译 Android

Gradle学习(三) 依赖管理基础

什么是依赖管理? 初略的说,依赖管理由两部分组成. 首先,Gradle需要知道并且寻找到一些你的的项目在构建或运行的时候所需要的文件 ,Gradle管这些需要进入(incoming)到你项目中的文件叫做依赖(dependencies). 其次,Gradle需要构建并且上传你的项目的一些生成物,Gradle管这些需要发出的(outgoing)的文件叫做出版(publictions). Dependency : 几乎所有工程都不可能完全的不依赖外部文件,一般都需要一些其他工程构建的文件来帮助完成一些

Java web 学习之旅

java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户管理系统,其实,这对于我这个刚开始接触java web的“新手”来说还是有一点挑战的,所以在最开始制定学习计划的时候,我有意识的把时间拖的比较长,希望我又足够的时间来完成这个项目.而情况却比我想象的要好很多,现在8号我已经完成了,比预期的22号提前了十多天,可能是学习的过程因为有学长的帮助,比较简单

Gradle学习系列之一——Gradle快速入门

Gradle学习系列之一--Gradle快速入门 这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构建多个Project 自定义Task类型 自定义Plugin 请通过以下方式下载本系列文章的Github示例代码: git clone https://github.com/davenkin/gradle-learning.git 和Maven一样,

Gradle 学习笔记

前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的人也用gradle构建android项目,让打包(注意,打包和构建是两码事)多版本android不再痛苦.最后,题外话:珍惜生命,远离ant.... Gradle build android 历史 Android Tools 主页 ,大概是今年2月份发布