[英]Gradle custom plugin depends on system task
我有一个名为MyPlugin
的自定义插件,它包含一个名为MyTask
的自定义任务。 我想让MyTask
compileJava
。 我试图给MyTask.dependsOn(compileJava)
,但它说不存在Task called 'MyTask' is not existing
。 有什么办法吗?
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
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
你必须使用
tasks.MyTask.dependsOn(copyLibs)
tasks.MyTask.dependsOn(compileJava)
因为您定义的任务对象不在当前范围内,如copyLibs。 但您可以通过任务参考访问它(请参阅: https : //docs.gradle.org/current/dsl/org.gradle.api.Project.html )
如果您将gradle插件应用于其他gradle项目,例如projectA,则您的插件会向projectA添加一个名为MyTask的任务。 您在上面发布的build.gradle是针对插件项目的,并且没有名为MyTask的任务。
据我 这是作者代码中的一个错字。 myTask
,你的任务被称为myTask
,而不是MyTask
。
更新 :
您不应用您的插件,因此不会创建任务。 而且你不能从插件的build.gradle
应用插件。 至少你不能应用正在构建的插件的版本。 您可以做的最好的事情是应用以前构建的插件版本,该插件存储在Maven仓库中。 但它看起来不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.