2016-04-05 12 views
0

私は自分のタスクをこのタスクに依存するようにする必要があるカスタムgradleプラグインを作成しました。 build.gradleからはできないので、私はJavaファイルでそれを行う予定でした。どのようにJavaメソッドに変換するのですか? Javaからconfigurations.runtimeを取得するにはどうすればよいですか?Javaファイルからgradleランタイム設定を取得

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

なぜこのタスクをプラグインで追加していませんか? – RaGe

+0

それはまさに私がやろうとしていることです。しかし私はjavaクラスで 'configuration.runtime'を取得できません。私のプラグインクラスはJavaで書かれています – Msp

+0

javaプラグインによってconfiguration.runtimeが追加されました。そのプラグインをプロジェクトに自分で追加しない限り、そのプラグインを使用することはできません。あなたはタスクリスナーを追加することができます。 – RaGe

答えて

0

あなたはまだ存在していないタスクに対してdependsOnを追加しようと、あなたのプラグインには効果的だ、タスクcopyLibsはの時点で存在していませんあなたのプラグインを適用する。 graleがbuild.gradleの残りの部分を解析すると、後でタスクグラフに追加されます。

タスクcopyLibsが標準の場合は、プラグインの実装に移動することができるため、プラグインはcopyLibを認識します。

これはうまくいきませんが、テストする必要がありますが、copyLibsというタスクがプロジェクトに追加されるたびに、(プロジェクトのプラグインを介して)project.tasksにリスナーを追加して、依存関係を登録することができます。

project.tasks.whenTaskAdded { task -> 
    if (task.name == 'copyLibs') { 
    MyTask.dependsOn(task) 
    } 
} 
関連する問題