原文地址 http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
8.1. What is dependency management?何谓?为何?
依赖管理大致有两块:首先Gradle需要找到你工程需要的东西,这些东西就是所谓的“依赖”。另外Gradle需要构建和上传你工程的产出,这就是所谓的发行。让我们来仔细看看它们:
大部分工程都不太可能完全自给自足,一把你都会用到其他工程的文件。比如我工程需要Hibernate就得把它的类库加进来,比如测试的时候可能需要某些额外jar包(jdbc驱动或者Ehcache jar包)。这些文件就是工程的依赖。Gradle需要你告诉它工程的依赖是什么,它们在哪,然后帮你加入构建中。依赖可能需要去远程库下载,比如Maven 或者 Ivy 库。也可以是本地库,甚至可能是另一个工程。我们称这个过程叫“依赖解决”(dependency resolution).
通常情况下,依赖本身也有依赖。比如Hibernate核心库就依赖一些其他类库。当Gradle测试你工程的时候,它也需要找到这些间接依赖。我们称之为“传递依赖”( transitive dependencies).
大部分工程构建的主要目的是脱离工程使用。比如生成jar包,包括源代码、文档等,然后发布出去。这些个玩意构成了项目的发行内容。Gradle也会替你分忧这个工作。你声明了要发行,Gradle会构建并且发行。你可能会把文件拷贝到本地某处,或者上传到远程 Maven 或 Ivy 库,甚至在其他项目里使用。整个这个都是所谓的发行。
我们看一下简单的依赖声明脚本:
Example 8.1. Declaring dependencies
build.gradle
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.+' }
这是在搞毛?这段脚本说的是:1,工程在编译时需要Hibernate core 3.6.7.Final。这样Hibernate核心库和它的依赖库都会引入。2,测试的时候需要4.0以上版本的junit。另外就是这些包都要从 Maven central 库里查找。接下来咱们详细看下。
Gradle的依赖会分组为“配置”(configurations) 。一个配置就是一套具名依赖,称为“依赖配置”。你可以声明外部依赖,后面我们会看到。
Java插件定义了一些标准配置,形成了插件本身的类路径库。下面列一下,你可以自己去这看:Table 23.5, “Java plugin - dependency configurations”.
该依赖对于编译发行是必须的。
该依赖对于运行时是必须的,默认包含编译时依赖。
该依赖对于编译测试是必须的,默认包含编译产品依赖和编译时依赖。
该依赖对于测试是必须的,默认包含编译、运行时、测试编译依赖。
依赖类型有多种,现在说一种外部依赖(external dependency)。这种依赖的对象不在工程内,甚至是在远程库里。
定义外部依赖需要如下加入到依赖配置:
Example 8.2. Definition of an external dependency
build.gradle
dependencies { compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' }
外部依赖使用group
, name
和version
属性。根据使用库的不同,group
和version可能是可选的。有一种快捷方式声明依赖:
Gradle是咋定位外部依赖呢?答案是“库”(repository)。一个库其实就是一大堆文件,不过是用group
, name
和version组织好的。Gradle支持很多库,比如
Maven 和Ivy;还只存多种方式连接到库,比如本地系统或者 HTTP.
Gradle默认没定义库。你使用前需要至少定义一个,比如Maven central 库:
或者远程Maven 库:
Example 8.5. Usage of a remote Maven repository
build.gradle
repositories { maven { url "http://repo.mycompany.com/maven2" } }
或者远程 Ivy 库:
Example 8.6. Usage of a remote Ivy directory
build.gradle
repositories { ivy { url "http://repo.mycompany.com/repo" } }
你可以自己建个库然后指定:
Example 8.7. Usage of a local Ivy directory
build.gradle
repositories { ivy { // URL can refer to a local directory url "../local-repo" } }
工程里可以制定多个库,Gradle会依序查找,一旦找到就停止。更多信息请看 Section 50.6, “Repositories”.
依赖配置也用来发布文件,这些文件称为“发布文件”(publication artifacts),或干脆就叫“发件”(artifacts)(不会翻译,谁来纠正一下。。)
一般的,插件会做很多发件定义工作,所以我们不用干什么。不过需要告诉Gradle发件要发布到哪里。方法是把库附在 uploadArchives
任务里。比如我们要发布到远程Ivy库:
Example 8.8. Publishing to an Ivy repository
build.gradle
uploadArchives { repositories { ivy { credentials { username "username" password "pw" } url "http://repo.mycompany.com" } } }
现在你执行 gradle uploadArchives
, Gradle就会构建并上次你的Jar包,同时生成并上传一个ivy.xml
文件.
可以发布到Maven 库,语法有一点点不同。记住要使用Maven插件不然发布不过去。这样Gradle会生成并上传pom.xml文件。
Example 8.9. Publishing to a Maven repository
build.gradle
apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/tmp/myRepo/") } } }
更多关于发布的信息请看 Chapter 51, Publishing artifacts.
相关推荐
情景:从项目中拿到一个客户的demo工程,或者导入一个别人的工程,编译时出现 Error:No such property: GradleVersion for class: JetGradlePlugin: 原因:这是gradle的版本太高导致的 解决办法: 第一步:打开...
.gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle缓存文件,包含pom,jar,source
Gradle版本插件本着的精神,该插件提供了一项任务,以确定哪些依赖项具有更新。 此外,该插件还会检查Gradle本身的更新。 您可能还希望探索由以下人员提供的其他功能: 用法 您可以使用以下配置将此插件添加到顶级...
深入理解Android(一):Gradle详解
android.tools.build:gradle: 2.2.2 源码,有需要分析gradle 编译过程,task任务分析,hook task 相关的童鞋,拿去。
Gradle依赖图生成器插件Gradle插件,可让您可视化图形中的依存关系。设置或更高版本。 buildscript { repositories { mavenCentral() } dependencies { classpath " ...
java源码反码梯度依赖分析 ...ca.cutterslade.gradle:gradle-dependency-analyze:1.6.0 " } } apply plugin : ' java ' apply plugin : ' ca.cutterslade.analyze ' 将此插件应用于多项目构建时,应将
gradle-maven-plugin:Gradle 5.x Maven发布插件来部署工件
Gradle常用命令 windows往掉前面的./ ./gradlew //下载更新gradle ./gradlew -v //版本号 ./gradlew assemble //构建项目输出 ./gradlew check //运行检测和测试任务 ./gradlew clean //清除build文件夹 ./gradlew ...
前提要应用此语义发布插件,您需要满足以下前提条件: 您的Gradle项目应通过gradle.properties (而不是build.gradle或build.gradle.kts )来管理其版本。 您的Gradle项目应该在项目根目录中具有可执行的Gradle包装...
gitonium:Gradle插件,用于基于Git分支和标签的自动版本控制
Could not find com.android.tools.build:gradle:3.4.1
android-gradle-aspectj:gradle插件在Android项目中添加了对AspectJ的支持
build时出现错误Could not resolve nl.eveoh:gradle-aspectj:1.6。将此文件放入此目录下即可.m2\repository\nl\eveoh\gradle-aspectj\1.6
classpath ' org.owasp:dependency-check-gradle:6.1.5 ' } } apply plugin : ' org.owasp.dependencycheck ' 步骤2,运行gradle任务 一旦应用gradle插件,请运行以下gradle任务来检查依赖关系: gradle ...
Gradle容易出错的插件该插件将JavaCompile任务配置为使用。要求该插件至少需要使用Gradle 5.2。 虽然支持JDK 8,但建议至少使用JDK 9编译器。 请参阅有关JDK 8支持的。用法plugins { id( " net.ltgt.errorprone " ) ...
Gradle插件来管理和下载依赖项。 在发布 用法 在配置块上配置依赖项类型 configurations { base cspDepenency install4jDependencies java } 声明你的依赖 一种。 您可以使用ext参数指定工件类型,并提供几种...
Gradle依赖助手 Gradle Dependency Helper可帮助您在build.gradle内的依赖关系关闭中查找maven库并将其添加到其中,然后从项目中的任何位置同步gradle。如何安装在受支持的JetBrains ide中:转到Settings → Plugins...
Gradle图形化依赖关系入门工具,支持入门: 项目依赖关系图 任务依赖关系图 配置依赖关系图 用法 首要条件 本项目依赖生成依赖图,需要先下载安装该软件连接软件安装目录配置为GRAPHVIZ_HOME环境变量。 约会依赖 根...
Gradle Dockerfile插件 Gradle插件无需外部配置即可使用外部Dockerfile生成和推送Docker映像。 这意味着您可以使用普通的Dockerfile并将其放入您的项目中。 该插件可通过。 安装 通过Gradle 使用该插件: Groovy: ...