Как я могу настроить плагин 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)