使gradle编译Java依赖于一尘不染

时间:2018-08-22 06:49:24

标签: java gradle

我想请您帮助解决以下问题:我有一个gradle项目,其中包含几个子模块。在我的项目中,配置了一个一尘不染的任务。现在,我要使依赖于spotlessApply任务的compileJava任务成为可能。我以这种方式尝试:

subprojects {
    apply plugin: 'java'
    apply plugin: 'com.diffplug.gradle.spotless'

    spotless {
        java {
            target 'src/**/*.java'
            licenseHeaderFile  "$rootDir/buildSrc/CopyrightHeader.java"
            importOrder(['java', 'javax', 'org', 'com'])
            eclipseFormatFile "$rootDir/buildSrc/formatter.xml"
        }
        format 'misc', {
            target 'src/**/*.md', 'src/**/*.xml', 'src/**/*.xsd', 'src/**/*.xsl'
            indentWithSpaces()
            trimTrailingWhitespace()
            endWithNewline()
        }
    }

    compileJava.dependsOn spotlessApply
}

但是会产生错误: 无法获取类型为org.gradle.api.Project的项目(...)的未知属性'spotlessApply'。

我也尝试过这样的事情:

compileJava.dependsOn project.tasks.findByName('spotlessApply')

没有成功... 预先感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

Spotless插件在project.afterEvaluate块中创建任务,以允许您在创建任务之前配置扩展程序-请参见here

要解决此问题,只需依赖任务的名称(即字符串)即可,Gradle会在需要时解析任务。

compileJava.dependsOn 'spotlessApply'