2016-04-05 10 views
2

私はMyPluginというカスタムプラグインを持っており、MyTaskというカスタムタスクが含まれています。私は作りたいMyTask dependsOn compileJava。私はMyTask.dependsOn(compileJava)を与えようとしましたが、それはTask called 'MyTask' is not existingと言います。それを行う方法はありますか?Gradleカスタムプラグインはシステムタスクに依存します

MyPlugin.java

public class MyPlugin implements Plugin<Project> { 
    public static final String TASK_NAME = "MyTask"; 

    @Override 
    public void apply(Project project) { 
     project.getExtensions().create(TASK_NAME, MyExtension.class); 
     project.getTasks().create(TASK_NAME, MyTask.class); 
    } 
} 

MyTask.java

public class MyTask extends DefaultTask { 
    private MyExtension extension; 

    @TaskAction 
    public void myTask() { 
     Project project = getProject(); 
     extension = project.getExtensions().findByType(MyExtension.class); 
     PropertyManager propertyManager = new PropertyManager(project, extension); 
     propertyManager.setProperties(); 
     System.out.println(extension.getValue()); 
    } 

MyExtension.java

public class MyExtension { 
    private String value; 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 
} 

build.gradle私の知る限りMyTask、あなたのタスクはmyTaskと呼ばれていない見ることができるよう

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

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

MyTask.dependsOn(copyLibs) //not working 
MyTask.dependsOn(compileJava) //not working 
+0

プラグインを適用してタスクを設定する場所に 'build.gradle'ファイルを追加できますか? – Michael

答えて

-1

これは作者のコードのタイプミスです。

UPDATE

タスクが作成されませんので、あなたのプラグインを適用しません。また、プラグインのbuild.gradleからプラグインを適用することはできません。少なくともビルド中のプラグインのバージョンを適用することはできません。あなたができることは、Mavenリポジトリに保存されているプラ​​グインの以前にビルドされたバージョンを適用することです。しかしそれは良い考えのようには見えません。

+0

それは実際にはタイプミスでした。 MyTaskの私の仕事の名前 – Msp

+0

あなたはあなたの質問にそれを修正しようとしていますか? – Michael

+0

私は変更を加えました – Msp

0

プラグインを別のgradleプロジェクトに適用した場合、たとえばprojectAと言うと、プラグインはMyTaskというタスクをprojectAに追加します。上記のbuild.gradleはプラグインプロジェクトのためのもので、MyTaskというタスクはありません。

0

あなたが定義したタスクオブジェクトがcopyLibsのような現在のスコープではないため、

tasks.MyTask.dependsOn(copyLibs) 
tasks.MyTask.dependsOn(compileJava) 

を使用する必要があります。しかし、あなたはタスクリファレンス(https://docs.gradle.org/current/dsl/org.gradle.api.Project.html参照)を使ってアクセスできます。