digraph javaPluginConfigurations {

    size = "20,20"
    splines = true;
    nodesep=0.3;
	node [shape=box style="rounded,filled" fillcolor= chartreuse];

    /* tasks */
    uploadArchives [fillcolor=darkslategray1 label="uploadArchives task"]
    jar [fillcolor=darkslategray1 label="jar task"]
    test [fillcolor=darkslategray1 label="test task"]
    compileJava [fillcolor=darkslategray1 label="compileJava task"]
    compileTestJava [fillcolor=darkslategray1 label="compileTestJava task"]

    /* deprecations */
    compile [fontcolor=red]
    runtime [fontcolor=red]
    testCompile [fontcolor=red]
    testRuntime [fontcolor=red]

    /* configurations */
    implementation -> compile;
    compileClasspath -> {compile compileOnly implementation}
    runtime -> compile
    runtimeClasspath -> {runtimeOnly runtime implementation}
    testCompile -> compile
    testImplementation -> {testCompile implementation}
    testCompileClasspath -> {testCompile testCompileOnly testImplementation}
    testRuntime -> {runtime testCompile}
    testRuntimeOnly -> runtimeOnly
    testRuntimeClasspath -> {testRuntimeOnly testRuntime testImplementation}
    default -> runtime

    /* tasks */
    uploadArchives -> archives [style=dashed label="uploads"]
    jar -> { archives runtime} [style=dashed label="adds jar"]
    testRuntime -> test [style=dashed label="used by"]
    compileClasspath -> compileJava [style=dashed label="used by"]
    testCompileClasspath -> compileTestJava [style=dashed label="used by"]


    /* invisible edge to control the layout */
    runtimeClasspath -> jar [style=invis]
}
