我是Gradle的新手,我正在阅读文档,但我不了解它的某些部分。其中一个部分与buildscript
块连接。它的目的是什么?
如果构建脚本需要使用外部库,则可以将它们添加到构建脚本本身的脚本类路径中。您可以使用buildscript()方法执行此操作,并传入一个声明构建脚本类路径的闭包。
buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } }
好的,但有什么区别:
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
例如,为什么有必要使用buildscript
?
答案 0 :(得分:147)
buildScript
块确定哪些插件,任务类和其他类可用于其余构建脚本。如果没有buildScript
块,您可以使用Gradle开箱即用的所有内容。如果您还想使用第三方插件,任务类或其他类(在构建脚本中!),则必须在buildScript
块中指定相应的依赖项。
答案 1 :(得分:112)
dependencies
和repositories
部分列出了构建源代码和运行源代码等所需的依赖关系。buildscript
用于build.gradle
文件本身。因此,这将包含创建RPM,Dockerfile
以及在所有依赖build.gradle
中运行任务的任何其他依赖项的依赖关系答案 2 :(得分:61)
我很欣赏彼得的回答......但对于我来说,其余的构建脚本在答案和文档中强调的意义并不是很明显。
通常引入依赖功能是用于Java程序或您可能正在编写的任何其他程序。引入Spring说,不是在构建脚本中使用,而是在Java程序中使用。将它放在buildscript
闭包中可确保依赖项可在gradle构建本身中使用。不是输出程序。
答案 3 :(得分:6)
" buildscript"配置部分用于gradle本身(即更改gradle如何执行构建)。所以本节通常会包含Android Gradle插件。
答案 4 :(得分:2)
它有点高,但希望有所帮助。
对我来说,一旦我开始理解什么是a building block,方法和任务,明显的区别就开始形成。语法如何,如何配置它们等等。所以我建议你仔细阅读所有这些。之后,您可以开始理解这种语法。
然后知道对象build.gradle(Project类的一个实例)的类型是非常重要的,这样才能知道build.gradle文件中有什么内容。这将回答“构建脚本”的位置。和其他人来自。并扩展您的功能/功能(让我们说安卓),看看plugins如何提供帮助。
最后但并非最不重要的是,这里有一个非常好的tutorial,它讨论了闭包,代理是理解脚本必不可少的概念。
答案 5 :(得分:1)
通过演示Android顶级gradle文件进行更多说明。
buildscript {
// this is where we are going to find the libraries defined in "dependencies block" at below
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
// everything listed in the dependencies is actually a plugin, which we'll do "apply plugin" in our module level gradle file.
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2' // this is android gradle plugin
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // kotlin gradle plugin
}
}
模块级gradle文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
什么是“插件”?它们只是实现插件接口的java类。在该界面下,它具有“应用”方法以添加具有不同名称的多个任务对象。任务是一个我们可以实现工作流的类。例如,构建任务包括构建应用程序的流程。
那么,buildscript有什么作用?它定义了在哪里找到插件。插件有什么作用?它包含多个任务。任务做什么?它为我们提供了构建,安装,皮棉等功能。
我的理解可能是错误的。如果您发现任何误导之处,请立即纠正我。