build.gradle buildscript 依赖项与依赖项?

enn*_*nth 6 dependencies classpath build-script gradle

有人可以向我解释一下 build.gradle 文件中“buildscript”中列出的依赖项与依赖项块 { } 中列出的常规依赖项有何不同吗?为什么它们必须用语法“实现”列出?我用谷歌搜索了这个,回复说构建脚本中的依赖项并用于“构建项目”,但我不明白这一点?谁能给出更清晰的图片和答案?

构建脚本:

buildscript
        {
            repositories
                    {
                        maven {
                            url 'myMavenFeed'
                            credentials {
                                username "myUsername"
                                password myPassword
                            }
                        }
                        mavenCentral()
                        jcenter()
                    }
            dependencies
                    {
                        classpath "com.microsoft.azure.sdk.iot:iot-device-client:1.14.1"
                    }
        }
Run Code Online (Sandbox Code Playgroud)

依赖块:

dependencies
        {
            compile group: 'com.microsoft.azure.sdk.iot', name: 'iot-device-client', version: '1.16.0'
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*teo 8

有人可以向我解释一下 build.gradle 文件中“buildscript”中列出的依赖项与依赖项块 { } 中列出的常规依赖项有何不同吗?

块中定义的依赖项buildscript { }是用于构建项目的依赖项。这些依赖项可在您的 Gradle 构建文件(build.gradlebuild.gradle.kts)中使用

中定义的依赖关系dependencies { }适用于您的应用程序代码。

那么,对于您问题中的示例,Gradle(构建系统)在其类路径中有意义吗iot-device-client?为什么构建系统需要iot-device-client在其类路径上来构建您的项目?它没有意义,因此应该将其删除。

现在假设您正在开发一个应用程序,需要iot-device-client. 您需要一种方法将此库添加到应用程序的代码/类路径中。然后,您可以像上面那样将其声明为依赖项:

dependencies {
    implementation("com.microsoft.azure.sdk.iot:iot-device-client:1.16.0")
}
Run Code Online (Sandbox Code Playgroud)

参考:

为什么它们必须用语法“实现”列出?

implementation称为配置AConfiguration代表一组工件及其依赖项

根据您应用于项目的插件,还有更多配置。例如,如果您应用Java 插件

plugins {
    id("java")
}
Run Code Online (Sandbox Code Playgroud)

可以使用以下配置:

  • 执行
  • 只编译
  • 编译类路径
  • ...还有很多

每个都有自己的含义/用法,我强烈建议在这里阅读它们。