我该如何使用maven-formatter-plugin解决问题?

时间:2019-06-19 14:27:17

标签: java spring maven formatter

我在Windows系统上的构建项目有一些问题。我的项目使用带有目标“验证”的formatter-maven-plugin。在GitHub中推送项目之前,我先将其格式化并推送。之后,我将其克隆到Windows计算机上,并尝试“ mvn全新安装”,但我得到了:

 Failed to execute goal net.revelc.code.formatter:formatter-maven-plugin:2.9.0:validate (default) on project application: File 'C:\Users\AUser\Desktop\demo\application\src\main\java\com\myapp\Application.java' has not been previously formatted. Please format file and commit before running validation!

在Linux中,该问题不存在。这是为什么?在推入Git之前,我确实对其进行了格式化。为什么在Linux上不存在问题?更改我无法更改格式的目标。

<plugin>
                <groupId>net.revelc.code.formatter</groupId>
                <artifactId>formatter-maven-plugin</artifactId>
                <version>2.9.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>validate</goal>
                        </goals>
                        <configuration>
                            <configFile>${project.basedir}/../eclipse/eclipse-formatter.xml</configFile>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

3 个答案:

答案 0 :(得分:0)

我认为您在格式化时错过了一个文件。基于主题上的this issue,似乎记录了一条更好的错误消息,指出了有问题的文件。如果将Maven Formatter升级到最新的稳定版本,则应看到以下格式的新错误消息:

  

文件' fileName '先前未格式化。请先格式化文件并提交,然后再运行验证!

答案 1 :(得分:0)

基于official usage documentation

以目标格式运行插件。

mvn formatter:format

完成一次之后,您应该可以正常运行。

答案 2 :(得分:0)

我遇到了这个问题,结果,Jenkins git fench 代码,一些文件以 CRLF 结尾,因为行分隔符是 LINUX 的 LF,所以验证失败。有两种方法可以解决这个问题:

您可以使用 .gitattributes set text eol = lf,保持 git fench 代码文件以 LF 结尾。

另一个,使用formatter-maven-plugin标签lineEnding,设置<lineEnding>KEEP</lineEnding>,让行分隔符取决于文件本身,而不是系统。

我更喜欢第二种方式,因为格式应该保持系统独立。