我创建了一个自定义gradle插件,我需要让我的任务取决于这个任务。由于我无法从build.gradle中执行此操作,因此我计划在Java文件中执行此操作。如何将其转换为Java方法?我如何从Java获得configurations.runtime
?
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 :(得分:0)
您在插件中有效,尝试为尚不存在的任务添加dependsOn
,在应用插件时,任务copyLibs
不存在。稍后,当gradle解析build.gradle的其余部分时,它会添加到任务图中。
如果任务copyLibs是标准的,你可以将它移动到你的插件实现,这样你的插件就会知道copyLibs。
我不确定这会起作用,必须对其进行测试,但你也可以在project.tasks中添加一个监听器(通过你的插件),以便每当一个名为copyLibs
的任务都是添加到项目中,您可以注册您的依赖项。
project.tasks.whenTaskAdded { task ->
if (task.name == 'copyLibs') {
MyTask.dependsOn(task)
}
}