groovy - 从测试扩展编写gradle任务

标签 groovy gradle

我想编写一个自定义插件,该插件应定义自己的测试任务。该任务应具有常见测试任务的属性,但要做一些额外的工作。

我的任务类如下所示:

import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.testing.Test

class MyTestTask extends Test {

    @TaskAction
    def intTest() {
        dosomething()
    }
}

我的应创建此任务的插件类如下所示:
import org.gradle.api.Plugin
import org.gradle.api.Project;

class JavaProjectPlugin implements Plugin<Project> {

    @Override
    public void apply(Project project) {
        project.plugins.apply('java')
        project.task('myTest', type: MyTestTask)

        doMoreStuff()
    }
}

但是,当我尝试执行应用此插件的项目时,出现以下错误:
Caused by: java.lang.ClassNotFoundException: org.gradle.api.tasks.testing.TestFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:588)
    at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:756)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:733)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:703)
    ... 232 more

我会错过某些东西吗,还是必须做完全不同的事情?

在用gradle 1.9构建插件之后,我得到了这个stacktrace:
Caused by: java.lang.NoSuchMethodError: org/gradle/api/tasks/testing/Test.<init>()V
    at com.ibm.gradle.MyTestTask.<init>(MyTestTask.groovy)
    at com.ibm.gradle.MyTestTask_Decorated.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:68)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:529)
    at org.gradle.api.internal.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:62)
    at org.gradle.api.internal.ClassGeneratorBackedInstantiator.newInstance(ClassGeneratorBackedInstantiator.java:36)
    at org.gradle.api.internal.project.taskfactory.TaskFactory$1.call(TaskFactory.java:124)
    ... 218 more

最佳答案

您能否检查一下是否在运行时使用gradle 1.2?
您可以在gradle 1.12中生成插件,但在运行时将其与较低版本一起使用

关于groovy - 从测试扩展编写gradle任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531915/

相关文章:

gradle - Flutter 安装 Gradle 问题

Grails 集成测试响应对象在后续调用 Controller 后不会更改

java - 如何使用 Groovy 或 Java 捕获 telnet 提示符?

user-interface - Geb 测试经常失败并出现 WaitTimeoutException : condition did not pass in 99. 0 秒

docker - Jenkins 管道 : docker. withServer(...) 不在远程服务器上执行 docker 命令

android - 如何从头开始设置Android Studio项目,使我能够使用Groovy

java - android studio 3.1 每次rebuild project 看变化

java - Gradle 同步失败 : Could not find com. android.tools.build :gradle:3. 6.2 问题

docker - Gradle docker镜像无法连接到mysql testcontainer

android - gradle-android-scala-plugin 给出 "Could not find matching constructor"错误