将gradle子项目链接到任务

时间:2019-08-15 10:54:07

标签: java gradle

这是我的项目的设置方式

root
- settings.gradle
- build.gradle
- subp1
- subp2

settings.gradle:

rootProject.name = 'subs'
include subp1, subp2

build.gradle:

....
subprojects {
    repositories {
        jcenter()
        mavenCentral()
    }

    task dev(type: org.gradle.api.DefaultTask) //OK!
    task subdev(type: subp1.GenerateTask) //!!NOT OK!
}

subp1 / src / main / java / subp1 / GenerateTask.java:

package subp1;

import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;


public class GenerateTask extends DefaultTask {

    @TaskAction
    public void generate() {
            System.out.println("subp1");
        }

}

当我在build.gradle中构建任务时,看起来subp1.GenerateTask不可用。

如何让gradle知道此任务可用。

1 个答案:

答案 0 :(得分:3)

那行不通。

您已将任务放置在Gradle应该建立的地方。这意味着,当Gradle读取您的GenerateTask时,它将已经从类路径上的某些类开始,并且您的GenerateTask将不会在那里,因为尚未编译。

要让Gradle看到您的任务,您要做的就是将其放在buildSrc中。我也建议您阅读perfect answer