从Java文件

时间:2016-04-05 16:13:57

标签: java gradle gradle-plugin

我创建了一个自定义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'
    }
}

1 个答案:

答案 0 :(得分:0)

您在插件中有效,尝试为尚不存在的任务添加dependsOn,在应用插件时,任务copyLibs不存在。稍后,当gradle解析build.gradle的其余部分时,它会添加到任务图中。

如果任务copyLibs是标准的,你可以将它移动到你的插件实现,这样你的插件就会知道copyLibs。

我不确定这会起作用,必须对其进行测试,但你也可以在project.tasks中添加一个监听器(通过你的插件),以便每当一个名为copyLibs的任务都是添加到项目中,您可以注册您的依赖项。

project.tasks.whenTaskAdded { task ->
  if (task.name == 'copyLibs') {
    MyTask.dependsOn(task)
  }
}