我正在尝试重新组织这个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/