check
功能,以确保代码格式正确。 添加网络挂钩
当前状态:
我有一个构建于以下项目的项目: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历史记录出现问题。
您可以让pre-commit hook触发已准备提交的文件的格式化程序。
maven-git-code-format使用google-java-format格式化程序,并且可以在编译阶段安装客户端预提交git hook。requiresMaven 3.5.x,应予以执行。
<build>
<plugins>
<plugin>
<groupId>com.cosium.code</groupId>
<artifactId>maven-git-code-format</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>
以maven-git-code-format指向IDE中的Maven不能与嵌入式Maven很好地配合使用。 IDEA maven-git-code-formatmvn compile
安装挂钩。对于mvn git-code-format:format-code -DglobPattern=**/*
)。Eclipse解决方法
Windows上的Eclipse]的开发人员应该在PATH中使用Cygwin。空的cygpath.exe
将起作用。以管理员身份运行“命令提示符”,然后执行C:\>echo "" > /"Program Files"/Git/bin/cygpath.exe
(对hook is not working eclipse egit client表示感谢)。 重新启动。
关于Java导入语句排序的注释
maven-git-code-format
与fmt-maven-plugin一起使用(例如稍后在CI中格式化或验证代码),这将是一个令人讨厌的惊喜。check
功能,以确保代码格式正确。 添加网络挂钩
执行支票
check
上执行fmt-maven-plugin
目标来完成Maven接受<plugin-prefix>:<goal>
或<plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
作为调用插件目标的方法,因此对于您的特定问题,可以运行:
mvn fmt:check
话虽如此,您将不得不添加Jenkins构建步骤,该步骤将运行上述命令。 this tutorial中的第5步向您展示如何添加构建步骤。希望这确实有帮助:D
我需要在每次提交之前运行Maven
您不需要运行多个Maven目标。例如,无需运行maven install
即可进行格式化。一个简单的maven compile
将形成类。
check
功能,以确保代码格式正确。 添加网络挂钩
我需要在每次提交之前运行Maven