Gradle自定义插件依赖于系统任务。

3
我有一个名为MyPlugin的自定义插件,其中包含一个名为MyTask的自定义任务。我想让MyTask依赖于compileJava。我尝试给MyTask.dependsOn(compileJava),但它说不存在名为'MyTask'的任务。有没有办法做到这一点? MyPlugin.java
public class MyPlugin implements Plugin<Project> {
    public static final String TASK_NAME = "MyTask";

    @Override
    public void apply(Project project) {
        project.getExtensions().create(TASK_NAME, MyExtension.class);
        project.getTasks().create(TASK_NAME, MyTask.class);
    }
}

MyTask.java

public class MyTask extends DefaultTask {
    private MyExtension extension;

    @TaskAction
    public void myTask() {
        Project project = getProject();
        extension = project.getExtensions().findByType(MyExtension.class);
        PropertyManager propertyManager = new PropertyManager(project, extension);
        propertyManager.setProperties();
        System.out.println(extension.getValue());
    }

MyExtension.java

public class MyExtension {
    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

build.gradle

apply plugin: 'maven'
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'com.jfrog.bintray'

sourceCompatibility = 1.8

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile gradleApi()
}

repositories {
    mavenCentral()
}

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
    }
}

task copyLibs(type: Copy) {
    from configurations.runtime
    into "$projectDir/libs"
}

MyTask.dependsOn(copyLibs)  //not working
MyTask.dependsOn(compileJava)   //not working

你能否添加 build.gradle 文件并在其中应用插件和配置任务? - Michael
3个回答

1

0
如果您的Gradle插件应用于不同的Gradle项目,例如projectA,则您的插件将向projectA添加一个名为MyTask的任务。您上面发布的build.gradle是针对插件项目的,并没有名为MyTask的任务。

-1
据我所见,你的任务被称为 myTask 而不是 MyTask这是作者代码中的一个笔误。 更新: 你没有应用插件,因此任务未被创建。你也不能从插件的 build.gradle 文件中应用插件。至少不能应用正在构建的插件版本。最好的方法是应用存储在 Maven 仓库中的先前构建的插件版本。但这看起来不是一个好主意。

不是的。那实际上是个打字错误。我的任务名称是MyTask。 - Msp
你打算在你的问题中修复它吗? - Michael
我已经做出了更改。 - Msp
在答案中添加了一个假设。 - Michael
我应该在插件本身中应用我的插件吗?我该如何做? - Msp
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接