首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从github存储库加载Gradle独立插件未知属性

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

Stack Overflow用户
提问于 2018-10-27 13:29:07
回答 1查看 809关注 0票数 0

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

只有当插件从GitHub上的远程存储库加载时,才会发生这种情况。从本地存储库加载时,它可以工作。插件实现是否可以以某种方式设置为提供属性,即使是来自远程存储库?或者这是一些不能被黑的GitHub特性?

详细信息如下:

我在另一个项目中的build.gradle如下所示:

代码语言:javascript
复制
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时,它会失败,抱怨“无法获得customProperty类型的根项目'another_project‘的未知属性”。

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

代码语言:javascript
复制
// 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");
    }
}
代码语言:javascript
复制
// 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");
    }
}
代码语言:javascript
复制
// 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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-28 06:46:37

要为Gradle插件创建扩展,需要用字段创建POJO类:

代码语言:javascript
复制
class YourExtension {
  String customProperty
}

然后在插件类中创建扩展:

代码语言:javascript
复制
public class CustomPlugin implements Plugin<Project> {

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

现在可以在build.gradle文件中使用扩展名:

代码语言:javascript
复制
extensionName {
    customProperty = "value"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53022345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档