首页 > 解决方案 > 在 Gradle 中,是否有支持静态方法获取项目实例的方式?

问题描述

我的构建有一些静态实用程序方法,目前它们有一个项目参数,因此它们可以访问任何东西,包括根项目。但是有没有办法省略那个参数跳过,只使用类似的东西:

Project rootProject = DefaultProject.project(":")

Gradle 6.6.1 API 将 Project 定义为一个接口,它的文档没有提到任何静态方法。我正在避免使用该org.gradle.api.internal.project.软件包,我想坚持使用受支持的 API。

标签: gradlestaticproject

解决方案


但是有没有办法省略那个参数跳过,只使用类似的东西:

您基本上会在构建生命周期期间为项目引用分配一个全局静态变量,但不能保证project实例的状态:

public class MyUtil {
    
    private static Project project;
    
    public static void setProject(Project project) {
        MyUtil.project = project;
    }

}

Gradle 6.6.1 API 将 Project 定义为一个接口,它的文档没有提到任何静态方法。

Project界面就是这样,Gradle 项目。它是与项目交互的一种方式。

拥有一堆不参与 Gradle 构建生命周期的静态实用程序方法并不是最好的。相反,如果这些实用程序方法正在执行大量工作或对项目进行修改,则考虑将该逻辑迁移到自定义 Gradle 插件和/或自定义 Gradle 任务

通过这样做,Gradle 将能够缓存并进行任何优化,这将导致改进的构建。


推荐阅读