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

woj*_*902 5 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
}
Run Code Online (Sandbox Code Playgroud)

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

我也尝试过这样的事情:

compileJava.dependsOn project.tasks.findByName('spotlessApply')
Run Code Online (Sandbox Code Playgroud)

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

Ran*_*niz 5

Spotless插件在一个project.afterEvaluate块中创建其任务,以允许您在创建任务之前配置扩展-参见此处

为了解决这个问题,只需依赖任务的名称(即字符串),Gradle将在需要时解析任务。

compileJava.dependsOn 'spotlessApply'
Run Code Online (Sandbox Code Playgroud)