Link gradle subproject to task

MontrealDevOne :

This is how my project is set up

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");
        }

}

It looks like subp1.GenerateTask is not available when I am building the task in build.gradle.

How do I let gradle know this task is available.

madhead :

That won't work.

You've placed your task in a place that Gradle is supposed to build. It means, that when Gradle reads your GenerateTask it will be already started with some classes on a classpath and your GenerateTask won't be there as it is not yet compiled.

What you have to do for Gradle to see your task is to put it in buildSrc. I would also suggest your to read this perfect answer.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324838&siteId=1