本帖最后由 dengyu 于 2020-10-25 09:33 编辑

gradle使用教程及谈谈ForgeGradle
(三)依赖管理

一、build.gradle初解
build.gradle是一个gradle项目的基本配置文件,在其中我们可以定义各种各样的自定义任务,当我们执行build任务的时候,build.gradle内的自定义任务也将会被执行,让我们点开build.gradle,看到有许多由groovy脚本编写成的项,下面来解释一下:
  • plugins:下面指明了该项目用到的插件,如果你曾经看过这方面知识,你会发现这个和apply plugin是一样的。
  • version:指明版本号,在build获得的jar会有展现。
  • repositories:指明仓库,这里的mavenCentral指的是maven中央仓库(是什么?一会讲),理论上不用改,除非你需要用到其他仓库。
  • dependencies:指明依赖文件(也是一会讲)
二、任务
一、任务的定义
我们都会遇到一个问题,如果我们希望在构建完成之前电脑输出一个“Hello, world!”祈福(?),那么该咋整呢?这个时候我们就需要自己写任务,一般地,一个任务的定义如下:
定义一:
task (任务名 [, type: 类型]) {
任务体
}

定义二:
  1. tasks.create('任务名'[, 类型]) {
  2. 任务体
  3. }
复制代码

任务由groovy脚本写成,每当我们执行build指令的时候,这些任务都将被执行,同时,我们完全可以单独执行某个任务,当我们写好一个任务时,此任务将会被添加到右边的other里面,我们随时可以执行。
二、任务执行的先后关系
如果我们希望编写一个具有先后执行关系的任务,可以使用taskB.mustRunAfter(taskA)语句,如:
  1. task A {
  2. doLast {
  3. println 'A'
  4. }
  5. }
  6. task B{
  7. doLast {
  8. println 'B'
  9. }
  10. }
  11. B.mustRunAfter A
复制代码
这样将会先输出A再输出B。
三、maven仓库与依赖
一、中央仓库
“前人栽树,后人乘凉。”
当我们需要使用前人的代码的时候,需要以 依赖 的形式来使用,gradle有一套强大的依赖系统供我们使用。
而且,我们的前辈为我们留下了一笔宝贵的代码财富,这些代码被集中在一个叫中央仓库的地方, maven中央仓库 就是一个例子,我们可以去寻找自己想要的依赖,这就是上文mavenCentral所指的地方:
我们可以寻找自己想要的依赖文件,如果我们用腻了Java自带的Pair类的话 pair是什么?如果你们学过信息学竞赛可能不会陌生 ,我们可以在上面找一个:

选择之后,这个网站会为我们提供一段代码,这个代码直接加入dependencies下面,之后我们只需要刷新一下,gradle会为我们自动下载、安装、配置classpath,同时若依赖有依赖,系统会自动下好所有的依赖的依赖:
之后我们就可以在程序里面使用这个依赖了。
如果我们不需要这个依赖了怎么办?直接删掉那句话即可。由于下载时不直接下载到项目里面,故删除依赖完全不用担心。这样灵活而又方便的依赖管理,正是gradle的魅力之一。
gradle有以下依赖添加语句:
compile:这个依赖将会在所有的classpath中生效,参与编译和运行
runtime:这个依赖不参与编译,但是程序运行的时候会需要它
testCompile:对测试时生效的compile
testRuntime:对测试时生效的runtime
如果我们想使用其他仓库,我们也可以在repositories里面添加jcenter()来使用JCenter Maven repository,如果网络允许,添加google()来使用Google Maven repository。
二、 URL仓库:
如果我们想使用某个开发者为我们提供的远程仓库,这个仓库可能并没有收录到以上数据库中,这个时候我们就要添加URL仓库,定义为:
  1. maven {
  2. url "address"
  3. }
复制代码
这样的话,我们就可以方便地获取特定的远程仓库的程序了。

来自群组: PluginsCDTribe