我想请您帮助解决以下问题:我有一个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')
没有成功... 预先感谢您的帮助!
答案 0 :(得分:3)
Spotless插件在project.afterEvaluate
块中创建任务,以允许您在创建任务之前配置扩展程序-请参见here
要解决此问题,只需依赖任务的名称(即字符串)即可,Gradle会在需要时解析任务。
compileJava.dependsOn 'spotlessApply'