java - buildSrc:无法获取 org.gradle.api.internal.artifacts.dsl.dependency.DefaultDependencyHandler 类型的对象的未知属性

标签 java android gradle buildsrc

我正在尝试重新组织这个Android (Java based) library使用buildSrc文件夹来定义所有版本和依赖项,如本 article 中所述。 .

我已经为 Kotlin 基础项目成功设置了几次。这次的项目是纯Java

buildSrc 文件夹中,我创建了以下 buildSrc/src/main/java/org/ligi/snackengage/Dependency.java 文件:

package org.ligi.snackengage;

public class Dependencies {

    public static class Android { /* ... */ }

    public static class GradlePlugins {
        public static final String ANDROID = "com.android.tools.build:gradle:3.6.3";
        // ...
    }

    public static class Libs { /* ... */ }

}

然后我引用项目根目录 build.gradle 中的定义:

import org.ligi.snackengage.Dependencies.GradlePlugins

apply plugin: "com.github.ben-manes.versions"

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath GradlePlugins.ANDROID
        classpath GradlePlugins.MAVEN
        classpath GradlePlugins.VERSIONS
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

这是work in progress branch 。当我构建项目时,出现以下错误:

* Where:
Build file 'SnackEngage/build.gradle' line: 12

* What went wrong:
A problem occurred evaluating root project 'SnackEngage'.
> Could not get unknown property 'GradlePlugins' for object of type
  org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

这是build log .

最佳答案

您已将 GradlePlugins 类定义为 Dependency 的内部静态类,因此您需要使用 Dependency.GradlePlugins 从您的应用程序中访问它构建脚本。

按如下方式更改依赖项 block :

import org.ligi.snackengage.Dependencies // do not import org.ligi.snackengage.Dependencies.GradlePlugins
buildscript {
    // ...
    dependencies {
        classpath Dependencies.GradlePlugins.ANDROID
        classpath Dependencies.GradlePlugins.MAVEN
        classpath Dependencies.GradlePlugins.VERSIONS
    }
}

编辑您还可以使用静态导入,如下所示:

import static org.ligi.snackengage.Dependencies.*
buildscript {
    // ...
    dependencies {
        classpath GradlePlugins.ANDROID
        classpath GradlePlugins.MAVEN
        classpath GradlePlugins.VERSIONS
    }
}

关于java - buildSrc:无法获取 org.gradle.api.internal.artifacts.dsl.dependency.DefaultDependencyHandler 类型的对象的未知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62160145/

相关文章:

Java:有人可以从 "Thinking in Java 4th edition"解释一下吗?

java - 如何访问整个文件层次结构?

Android Deeplink pathPrefix 属性被忽略

java - Gradle 卡在解决依赖关系 :testRunTime 处

grails - Gradle Grails-如何排除基于环境的依赖关系?

java - 如何使用 IntelliJ 中的相对路径从外部库中引用 jar 文件?

Java递归(?)重复(?)深度(?)模式匹配

java - 可观察类的性能影响

android - fragment 中的加载器 - fragment 会泄漏吗?

android - 绘制 2 个矩形,中间有切口