【问题标题】:Make gradle compileJava dependsOn spotlessApply使 gradle 编译Java 依赖于一尘不染应用
【发布时间】:2020-07-13 06:04:22
【问题描述】:

我有一个包含多个子模块的 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
}

但它会产生错误:

无法为项目 (...) 获取未知属性“spotlessApply” 输入 org.gradle.api.Project。

我也试过这样的:

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

但它不起作用。

【问题讨论】:

    标签: java gradle


    【解决方案1】:

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

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

    compileJava.dependsOn 'spotlessApply'
    

    【讨论】:

    • 这么简单的一行,让生活更轻松!我们不使用一尘不染来告诉我我做错了什么,而是在所有开发人员之间有一个统一的格式并增加可读性。在构建时发现您不满足规则(可以自动修复),这很烦人(并且很难说服团队)。
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2014-07-17
    • 2016-09-16
    • 1970-01-01
    相关资源
    最近更新 更多