首页 > 解决方案 > Gradle插件返回错误消息

问题描述

我创建了一个自定义 gradle 插件 -TaskConfigPlugin

Gradle Version: 1.12/2.0 (由于组织限制,目前无法升级)

Java Version: 1.8

我的插件代码如下- TaskConfigPlugin.java>>

public class TaskConfigPlugin implements Plugin<Project> {

    private String taskPrefix;
    private Task mainTask;

    @Override
    public void apply(Project project) {
        TaskConfigPluginExtension extension = project.getExtensions()
                .create("taskOrder", TaskConfigPluginExtension.class);

        this.taskPrefix = extension.getTaskPrefix(); //the taskPrefix fetched is null
        this.mainTask = extension.getMainTask(); //mainTask fetched is null

        configureTaskOrdering(project);
    }


    private void configureTaskOrdering(Project project){
        // My Logic to order the task using 'dependsOn', 'mustRunAfter' etc
        // It uses the 'taskPrefix' to fetch all matching tasks and then 
        // establish the relationship with the 'mainTask'
    }
}

扩展对象 - TaskConfigPluginExtension.java>>

public class TaskConfigPluginExtension {

    private String taskPrefix;
    private Task mainTask;

    // getters and setters for the above

}

我在其中添加了插件信息,META-INF/gradle-plugins/TaskConfigPlugin.properties 其中包含插件的完整包名。

该插件在我的 gradle 中的使用方式如下 -mainConsumer.gradle

buildscript {
    repositories {
        flatDir name: 'libs', dirs: 'lib/'
    }
    dependencies {
        classpath ':TaskConfigPlugin:1.0'
    }
}

apply plugin: 'TaskConfigPlugin'

task mainConsumer

taskOrder {
    taskPrefix = 'setup'
    mainTask = mainConsumer
}

现在,当我运行我的消费 gradle 时mainConsumer.gradle,我看到获取的taskPrefixandmainTask值是 NULL。我知道它们属于CONFIGURATION阶段,因此无法提前获取值。但是我尝试了该project.afterEvaluate选项,但这也不适合我。

有一些解决方案(希望它们有效),ProviderProperty我不能使用它们,因为它们已经引入了更高的 gradle 版本,我猜4.+

那么,我是否有一些解决方案或解决方法gradle 1.12来获取CONFIGURATION阶段本身的扩展值?

感谢您的回复。提前致谢。

标签: c#

解决方案


推荐阅读