配置 IntelliJ 以使用与 Spotless 相同的 Java 格式化程序

Posted

技术标签:

【中文标题】配置 IntelliJ 以使用与 Spotless 相同的 Java 格式化程序【英文标题】:Confgure IntelliJ to use the same Java formatter as Spotless 【发布时间】:2020-05-02 09:49:35 【问题描述】:

我使用Spotless Gradle plugin 来确保我的应用程序中Java 代码的格式一致。 build.gradle中的相关条目是

plugins 
  id "com.diffplug.gradle.spotless" version "3.27.0"


spotless 
  java 
    // The available versions of the Eclipse JDT formatter are defined here
    // https://github.com/diffplug/spotless/tree/master/lib-extra/src/main/resources/com/diffplug/spotless/extra/eclipse_jdt_formatter
    eclipse('4.13.0')
    indentWithSpaces()
    removeUnusedImports()
  

有什么方法可以配置 IntelliJ 以使用相同的格式设置?

【问题讨论】:

我会在 IntelliJ 论坛上问这个问题,因为了解它的开发人员最好定期跟踪这些论坛。 【参考方案1】:

不是 100% 令人满意但可行的方法:

1.配置 Spotless 任务

spotless 
    format 'misc', 
        target '*.properties','*.gradle', '*.md', '.gitignore' // etc.
        // code style rules
    
    java 
        // code style rules
    

2。将任务激活添加到*Apply 任务

3.为Build Project分配方便的击键

Settings > Keymap 下执行此操作。

请记住,Build Project 正在使用 IntelliJ 的内部构建器。它是增量的(高性能),但在自定义/第三方 gradle 任务的情况下,构建结果可能会偏离 $ gradle build 结果。

对于使用 DevTools 的 Spring 应用程序,构建将导致自动提供更改/更新。


使用 IDE Hook,为 IntelliJ 实现专用的 Spotless 格式化程序插件应该相当简单: https://github.com/diffplug/spotless/blob/master/plugin-gradle/IDE_HOOK.md

到目前为止,我还没有找到。

【讨论】:

已经一年了,令人惊讶的是,IDEA 中仍然没有一尘不染的插件,令人惊讶的是,它似乎不应该那么难实现。无论如何,运行 Gradle 任务听起来并不是一个坏主意,您可以通过这种方式挂钩其他清理任务。一项改进可能是使用 idea-ext 插件来设置挂钩,而无需使用 UI。【参考方案2】:

虽然 Tob 的方法有效,但我使用了一些不同的配置方式。

1。在首选项中创建一个外部工具

2。为创建的外部工具分配快捷方式

我更喜欢使用 + + ;,因为它很容易记住(IDEA 默认使用 + + L)。

3。使用它

+ + ; 并等待所有文件处理完毕,IDE 重新加载更改的文件。通常需要 2-5 秒。

警告:spotless 可能会崩溃(这通常是由于代码中的错误而发生的,因此请确保您的代码是可编译的):

【讨论】:

以上是关于配置 IntelliJ 以使用与 Spotless 相同的 Java 格式化程序的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 IntelliJ HQL 控制台以使用 Spring Boot

IntelliJ IDEA 12 与 Tomcat7 配置

使用JUnit配置IntelliJ IDEA以进行单元测试

IntelliJ IDEA 的安装配置与使用(入门级)

IntelliJ IDEA 与 SVN配置

Intellij 运行配置 Spring Boot 与 Maven 问题