github - 从 github 存储库加载时 Gradle 独立插件未知属性

标签 github gradle plugins properties

我在 Java 中创建了一个简单的独立 Gradle 插件,并在 GitHub 上创建了一个用于发布插件的 Maven 存储库。一切正常,除了检索插件应该可用的项目属性。当我在另一个 Gradle 项目中应用插件时,它找不到这些属性。

仅当插件从 GitHub 上的远程存储库加载时才会发生。从本地存储库加载时,它可以工作。插件实现是否可以以某种方式设置为甚至从远程存储库提供属性?或者这是一些无法被黑客入侵的 GitHub 功能?

详情如下:

我的 build.gradle在另一个项目中看起来像这样:

buildscript {
    repositories {
        maven {
            url "GITHUB_REPO_URL"
        }
    }

    dependencies {
        classpath "custom_plugin_group:custom_plugin:1.0"
    }
}

apply plugin: "custom_plugin"

task propertyTest {
    doLast {
        println project.customProperty
    }
}

当我尝试运行任务 propertyTest 时,它无法提示“无法为 org.gradle.api.Project 类型的根项目 'another_project' 获取未知属性 'customProperty'”。

我正在主插件类中的方法应用中创建属性。我尝试了以下三种方法:

// First approach - adding a simple value to extensions
public class CustomPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {            
        project.getExtensions().add("customProperty", "Custom property value");
    }
}

// Second approach - setting extra property to extensions
public class CustomPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {            
        project.getExtensions().getExtraProperties().set("customProperty", "Custom property value");
    }
}

// Third approach - adding a property instance to extensions
public class CustomPlugin implements Plugin<Project> {
    @Override
    public void apply(Project project) {            
        Property<String> customProperty = project.getObjects().property(String.class);
        customProperty.set("Custom property value");
        project.getExtensions().add("customProperty ", customProperty);
    }
}

最佳答案

要为您的 Gradle 插件创建扩展,您需要创建带有字段的 POJO 类:

class YourExtension {
  String customProperty
}

然后在你的插件类中创建扩展:
public class CustomPlugin implements Plugin<Project> {

  @Override
  public void apply(Project project) {
    project.getExtensions().create("extensionName", YourExtension.class);
  }
}

现在您可以在 build.gradle 中使用扩展名了文件:
extensionName {
    customProperty = "value"
}

关于github - 从 github 存储库加载时 Gradle 独立插件未知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022345/

相关文章:

javascript - 我怎样才能在chartjs-node-canvas中实现chartjs-plugin-datalabels?

github - GitHub Repo 怎么会有 165 个浏览量,但只有 1 个唯一身份访问者?

android - 找不到参数的方法 android() ... flutter.gradle 问题

spring-boot - Gradle 'war' 插件如何更改存档的名称

plugins - WooCommerce 复合产品尝试在变体上设置 SKU 出现 "Variation SKU must be unique."错误

netbeans - 推荐的 NetBeans UML 插件

c# - 以编程方式检测从 C# 代码 checkout 的当前 git 分支

python - Jupyter Notebook 中的图像 ipynb 未显示在 GitHub 私有(private)仓库中,但相同的代码适用于公共(public)仓库

Git fatal error : info/refs not found

android - 在 gradle 上构建 android 项目时找不到名称为 'default' 的配置