【问题标题】:What is default dependency scope in Gradle on Android?Android 上的 Gradle 中的默认依赖范围是什么?
【发布时间】:2016-02-06 19:57:02
【问题描述】:

在 Android Studio 的 Gradle 中,我注意到提供依赖范围是可选的。例如:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
            'org.hamcrest:hamcrest-core:1.3'
            'org.hamcrest:hamcrest-library:1.3'
}

请注意,最后两个库没有附加编译范围。我把它留空了,我仍然可以同步 gradle。如果此处未指定任何内容,则默认范围是什么?

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:

    范围实际上是给定依赖配置的标签。这在很大程度上取决于您使用的 gradle 插件(即:java 插件或 android 插件)。 如果不添加任何配置标签,它将被保存为无标签的依赖项。 大多数情况下,如果您需要 implementation 依赖并且不添加标签,您的构建将会中断。如果它没有损坏,可能是因为:

    • 您实际上并不需要依赖项
    • 您使用的 gradle 插件可以很好地处理未标记的依赖项
    • 或者(更可能),依赖项已经在您的构建缓存或部分构建中,因此编译器仍然能够找到类,但如果您清理项目,则会中断。

    相关文档on dependency configuration for gradle

    【讨论】:

    • 是的,我明白你的意思。 Gradle 同步成功,但是当我实际运行应用程序时,它说它找不到范围。很奇怪,同步成功了。谢谢。
    【解决方案2】:

    Logain 的回答有一个小的更新。 compile 现在已弃用。 implementation 可以用来替换它。 https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 2019-08-27
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多