如何按照googlejava格式格式化代码
How to format code according to google java format
当前状态:
我有一个构建项目:Java 1.8.161,Maven 3.3.9,SpringBoot 2.0.1,工具:Jenkins 和 GitLab。我想使用 google java format 作为整个团队的标准。
我的调查/解决方案:
在调查过程中我发现solution,这听起来很简单。只需更新 pom 文件:
<build>
<plugins>
<plugin>
<groupId>com.coveo</groupId>
<artifactId>fmt-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
并且有效。如果我 运行 编译、打包、验证、安装或部署 Maven 生命周期代码被格式化。
问题:
在所有团队成员的每次提交之后,我如何 运行 在他们的 IDEA 中没有任何额外步骤?因为现在,我需要在每次提交之前 运行 Maven。但是在应用程序的 运行 期间没有必要,因此团队可以避免它。这当然会导致 git.
中的历史问题
为了在每次开发人员提交后运行 这个格式化程序,您必须首先有一个 Jenkins 提交挂钩,这将触发 Jenkins 构建。构建的其中一个阶段应该执行 fmt-maven-plugin(或任何其他)的 check
功能,以确保代码格式正确。
添加网络钩子
首先要做的是添加一个 webhook,它将在您的 git 存储库中每次提交后触发 Jenkins 构建。您可以找到如何执行此操作 here. For Gitlab specific instructions, this post from medium 可能会有帮助。
正在执行检查
这可以通过在 fmt-maven-plugin
上执行 check
目标来完成
Maven 接受 <plugin-prefix>:<goal>
或 <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
作为调用插件目标的方式,因此对于您的特定问题,您可以 运行:
mvn fmt:check
也就是说,您必须添加一个 Jenkins 构建步骤,这将 运行 提到的命令。 this tutorial 中的第 5 步向您展示了如何添加构建步骤。
希望这对您有所帮助 :D
您可以让 预提交钩子 触发暂存文件的格式化程序。
git-code-format-maven-plugin uses google-java-format formatter and can install client-side pre-commit git hook during compile phase. It requires Maven 3.5.x,应该强制执行。
<build>
<plugins>
<plugin>
<groupId>com.cosium.code</groupId>
<artifactId>git-code-format-maven-plugin</artifactId>
<version>VERSION</version>
<executions>
<execution>
<goals>
<goal>install-hooks</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>VERSION</version>
<executions>
<execution>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.5.4,)</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
指向 standalone Maven in IDE 就像 git-code-format-maven-plugin 一样不能很好地与嵌入式 Maven 一起玩。
mvn compile
安装钩子。对于IDEA,就是这样。
因为 git-code-format-maven-plugin 只格式化更改的文件(这很好),预先格式化整个项目一次可能很好( mvn git-code-format:format-code -Dgcf.globPattern=**/*
).
Eclipse 的解决方法
由于 EGit 中的错误,它有时会完全忽略 Git 挂钩,因此在 Windows 上使用 Eclipse 的开发人员应该安装 Cygwin在路径中。一个空的 cygpath.exe
就可以了。 运行 'Command Prompt' 以管理员身份执行 C:\>echo "" > /"Program Files"/Git/bin/cygpath.exe
(感谢 )。
重启。
关于 java 导入语句排序的注释
在 IDE 中优化导入或重新格式化或使用插件重新格式化,可能会导致导入顺序发生变化。如果旧版本的 git-code-format-maven-plugin 与 fmt-maven-plugin(例如稍后在 CI 中格式化或验证代码)。
- git-code-format-maven-plugin 将对导入进行排序(自版本 1.20 起)
- fmt-maven-plugin 将始终对导入进行排序
- googleformatter-maven-plugin 可以选择对导入进行排序(不是默认的)
I need to run Maven before each commit
您不需要 运行 多个 Maven 目标。例如,无需 运行 maven install
即可进行格式化。一个简单的 maven compile
将形成 类.
当前状态:
我有一个构建项目:Java 1.8.161,Maven 3.3.9,SpringBoot 2.0.1,工具:Jenkins 和 GitLab。我想使用 google java format 作为整个团队的标准。
我的调查/解决方案:
在调查过程中我发现solution,这听起来很简单。只需更新 pom 文件:
<build>
<plugins>
<plugin>
<groupId>com.coveo</groupId>
<artifactId>fmt-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
并且有效。如果我 运行 编译、打包、验证、安装或部署 Maven 生命周期代码被格式化。
问题:
在所有团队成员的每次提交之后,我如何 运行 在他们的 IDEA 中没有任何额外步骤?因为现在,我需要在每次提交之前 运行 Maven。但是在应用程序的 运行 期间没有必要,因此团队可以避免它。这当然会导致 git.
中的历史问题为了在每次开发人员提交后运行 这个格式化程序,您必须首先有一个 Jenkins 提交挂钩,这将触发 Jenkins 构建。构建的其中一个阶段应该执行 fmt-maven-plugin(或任何其他)的 check
功能,以确保代码格式正确。
添加网络钩子
首先要做的是添加一个 webhook,它将在您的 git 存储库中每次提交后触发 Jenkins 构建。您可以找到如何执行此操作 here. For Gitlab specific instructions, this post from medium 可能会有帮助。
正在执行检查
这可以通过在 fmt-maven-plugin
check
目标来完成
Maven 接受 <plugin-prefix>:<goal>
或 <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
作为调用插件目标的方式,因此对于您的特定问题,您可以 运行:
mvn fmt:check
也就是说,您必须添加一个 Jenkins 构建步骤,这将 运行 提到的命令。 this tutorial 中的第 5 步向您展示了如何添加构建步骤。
希望这对您有所帮助 :D
您可以让 预提交钩子 触发暂存文件的格式化程序。
git-code-format-maven-plugin uses google-java-format formatter and can install client-side pre-commit git hook during compile phase. It requires Maven 3.5.x,应该强制执行。
<build>
<plugins>
<plugin>
<groupId>com.cosium.code</groupId>
<artifactId>git-code-format-maven-plugin</artifactId>
<version>VERSION</version>
<executions>
<execution>
<goals>
<goal>install-hooks</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>VERSION</version>
<executions>
<execution>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>[3.5.4,)</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
指向 standalone Maven in IDE 就像 git-code-format-maven-plugin 一样不能很好地与嵌入式 Maven 一起玩。
mvn compile
安装钩子。对于IDEA,就是这样。
因为 git-code-format-maven-plugin 只格式化更改的文件(这很好),预先格式化整个项目一次可能很好( mvn git-code-format:format-code -Dgcf.globPattern=**/*
).
Eclipse 的解决方法
由于 EGit 中的错误,它有时会完全忽略 Git 挂钩,因此在 Windows 上使用 Eclipse 的开发人员应该安装 Cygwin在路径中。一个空的 cygpath.exe
就可以了。 运行 'Command Prompt' 以管理员身份执行 C:\>echo "" > /"Program Files"/Git/bin/cygpath.exe
(感谢
重启。
关于 java 导入语句排序的注释
在 IDE 中优化导入或重新格式化或使用插件重新格式化,可能会导致导入顺序发生变化。如果旧版本的 git-code-format-maven-plugin 与 fmt-maven-plugin(例如稍后在 CI 中格式化或验证代码)。
- git-code-format-maven-plugin 将对导入进行排序(自版本 1.20 起)
- fmt-maven-plugin 将始终对导入进行排序
- googleformatter-maven-plugin 可以选择对导入进行排序(不是默认的)
I need to run Maven before each commit
您不需要 运行 多个 Maven 目标。例如,无需 运行 maven install
即可进行格式化。一个简单的 maven compile
将形成 类.