【问题标题】:How can I configure Gradle google-java-format plugin to run goJF in the build step?如何配置 Gradle google-java-format 插件以在构建步骤中运行 goJF?
【发布时间】:2020-07-16 21:42:38
【问题描述】:

我们按照自述文件将https://github.com/sherter/google-java-format-gradle-plugin 连接到我们的项目中。

我们还连接了一个 pre-commit 钩子以在提交之前运行插件,这确保了更改列表中的所有代码在推送之前都已格式化,从而避免了在 Jenkins 中运行 verGJF 任务时出错。

但是我们必须记住在运行./gradlew build之前在本地运行goJF,否则构建失败并出现格式错误。

我们通过为 IntelliJ 添加 https://plugins.jetbrains.com/plugin/8527-google-java-formathttps://plugins.jetbrains.com/plugin/7642-save-actions 插件、启用 google-java-format 插件并将 save-actions 插件配置为在保存时格式化来解决此问题。

但这是开发人员必须记住的大量额外配置,而且这意味着他们在处理代码时无法按照自己想要的方式格式化代码,只能在构建或提交时重新格式化.

我们更喜欢全 Gradle 解决方案,以便 goJF 任务在 build 任务之前运行(并且在 verGJF 任务之前运行,该任务已经被谷歌绑定到 build 任务-java-format Gradle 插件)。

我们不知道该怎么做。别人知道吗?

【问题讨论】:

  • 您可以考虑在 build.gradle 中添加任务依赖项的另一种替代方法是将 Gradle 任务配置为在 IDE 构建之前/之后运行,请参阅Configure running triggers for Gradle tasks
  • 我最终使用了 Chriki 的答案,但是能够将 Gradle 任务连接到 IntelliJ 在其他情况下会很有用——谢谢!

标签: gradle intellij-idea google-java-format


【解决方案1】:

听起来您想基本上始终确保在运行 verifyGoogleJavaFormat 任务之前代码格式正确(并且可能会抱怨)。在这种情况下,我只需让googleJavaFormat 任务成为verifyGoogleJavaFormat 任务的依赖项。在您的 build.gradle 文件中,应用 google-java-format 插件后,只需添加以下内容:

verifyGoogleJavaFormat.dependsOn(tasks.googleJavaFormat)

或者,如果您真的只想在运行 build 任务时运行代码格式化程序(而不是仅在运行 verifyGoogleJavaFormat 任务时),您可以添加以下代码:

build.dependsOn(tasks.googleJavaFormat)
verifyGoogleJavaFormat.mustRunAfter(tasks.googleJavaFormat)

【讨论】:

  • 我试过 mustRunAfter 但无法让它工作。我会尝试你的第一个建议。
  • 尝试您的第一个建议时,它的失败方式与 mustRunAfter 相同: * 出了什么问题:无法确定任务 ':verifyGoogleJavaFormat' 的依赖关系。 > 无法将 com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormatExtension_Decorated@4600b9a9 转换为任务。支持以下类型/格式: - String 或 CharSequence 任务名称或路径 - TaskReference 实例 - Task 实例 ... - 包含任何这些类型的 Iterable、Collection、Map 或数组实例
  • 对不起,我应该先尝试我的解决方案。我没有意识到有一个与googleJavaFormat 任务同名的扩展。我已更新我的答案并使用 Gradle 6.3 成功对其进行了测试)。
  • 啊!那行得通。我以前没有见过同名的任务和扩展。将其添加到下次要检查的事项列表中。谢谢!
  • 以为我已经做到了,但只是投了赞成票。现在接受。再次感谢——我现在在我们的 Gradle 文件中有这个配置!
猜你喜欢
  • 2019-07-10
  • 1970-01-01
  • 2015-02-24
  • 2022-07-23
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 2018-06-26
  • 2020-02-02
相关资源
最近更新 更多