gpt4 book ai didi

java - Gradle 自定义插件取决于系统任务

转载 作者:行者123 更新时间:2023-12-02 12:18:52 24 4
gpt4 key购买 nike

我有一个名为 MyPlugin 的自定义插件,它包含一个名为 MyTask 的自定义任务。我想让 MyTask 依赖于 compileJava。我试图给出MyTask.dependsOn(compileJava),但它说名为“MyTask”的任务不存在。有什么办法可以做到吗?

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)

关于java - Gradle 自定义插件取决于系统任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com