2016-04-05 6 views
0

Ich habe ein benutzerdefiniertes Gradle-Plugin erstellt, wo ich meine Aufgabe abhängig von dieser Aufgabe machen muss. Da ich es von build.gradle aus nicht tun kann, hatte ich vor, es in Java-Datei zu tun. Wie konvertiere ich es in eine Java-Methode? Wie bekomme ich configurations.runtime von Java?Get gralle Laufzeitkonfiguration aus Java-Datei

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

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' 
    } 
} 
+0

Warum fügen Sie diese Aufgabe nicht auch über Ihr Plugin hinzu? – RaGe

+0

Das ist genau das, was ich versuche zu tun. Aber ich kann 'configuration.runtime' nicht in meiner Java-Klasse bekommen. Meine Plugin-Klasse ist in Java geschrieben – Msp

+0

configuration.runtime wird vom Java-Plugin hinzugefügt. Wenn Sie das Plugin nicht selbst zum Projekt hinzufügen, können Sie es nicht verwenden. Sie können jedoch einen Aufgabenlistener hinzufügen. – RaGe

Antwort

0

Sie sind effektiv in Ihrem Plugin, versuchen, eine dependsOn für eine Aufgabe hinzufügen, die noch nicht existiert, Aufgabe copyLibs existiert nicht zum Zeitpunkt der das Plugin anwenden Es wird später dem Taskgraphen hinzugefügt, während Gradle den Rest von build.gradle analysiert.

Wenn die Aufgabe copyLibs Standard ist, können Sie sie in Ihre Plugin-Implementierung verschieben, damit Ihr Plugin dann auf copyLibs aufmerksam wird.

Ich bin nicht sicher, dass das funktionieren würde, muss es testen, aber Sie könnten auch einen Listener zu project.tasks (über Ihr Plugin) hinzufügen, so dass immer wenn eine Aufgabe copyLibs zum Projekt hinzugefügt wird, Sie können Ihre Abhängigkeit registrieren.

project.tasks.whenTaskAdded { task -> 
    if (task.name == 'copyLibs') { 
    MyTask.dependsOn(task) 
    } 
}