Как я могу настроить плагин Gradle google-java-format для запуска goJF на этапе сборки?

Мы подключили https://github.com/sherter/google-java-format-gradle-plugin к нашему проекту согласно readme.

Мы также подключили хук предварительной фиксации для запуска плагина перед фиксацией, что гарантирует, что весь код в списке изменений отформатирован перед его отправкой, что позволяет избежать ошибок в Jenkins, когда мы запускаем verGJF задача.

Но мы должны не забывать бежать goJF локально перед запуском ./gradlew build, или сборка завершается ошибкой форматирования.

Мы работали над этим, добавив плагины https://plugins.jetbrains.com/plugin/8527-google-java-format и https://plugins.jetbrains.com/plugin/7642-save-actions для IntelliJ, что позволило плагин google-java-format и настройка плагина save-actions для форматирования при сохранении.

Но разработчик должен помнить о большом количестве дополнительных настроек, плюс это означает, что они не могут форматировать код так, как они хотят, работая над ним, и могут только переформатировать его в момент сборки или фиксации.

Мы бы предпочли решение, полностью построенное на Gradle, чтобы goJF задача запускается до build задача (и до verGJF задача, которая уже привязана к build задачу плагином Gradle 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)
Другие вопросы по тегам