文件不以换行符结尾[NewlineAtEndOfFile]

时间:2017-05-04 09:29:03

标签: java eclipse file newline checkstyle

当我尝试在我的项目中使用mvn clean install时,我遇到了这些错误:

[ERROR] C:\Users\lob\Downloads\zanata-platform-platform-4.0.0\zanata-platform-platform-4.0.0\parent\eclipse-code-formatter-js.xml:0: File does not end with a newline. [NewlineAtEndOfFile]
[ERROR] C:\Users\lob\Downloads\zanata-platform-platform-4.0.0\zanata-platform-platform-4.0.0\parent\eclipse-code-formatter.xml:0: File does not end with a newline. [NewlineAtEndOfFile]
[ERROR] C:\Users\lob\Downloads\zanata-platform-platform-4.0.0\zanata-platform-platform-4.0.0\parent\pom.xml:0: File does not end with a newline. [NewlineAtEndOfFile]
[ERROR] C:\Users\lob\Downloads\zanata-platform-platform-4.0.0\zanata-platform-platform-4.0.0\parent\README.txt:0: File does not end with a newline. [NewlineAtEndOfFile]
Audit done.
[INFO] There are 4 errors reported by Checkstyle 7.2 with zanata-build-tools/checkstyle.xml ruleset.
[ERROR] eclipse-code-formatter-js.xml:[0] (misc) NewlineAtEndOfFile: File does not end with a newline.
[ERROR] eclipse-code-formatter.xml:[0] (misc) NewlineAtEndOfFile: File does not end with a newline.
[ERROR] pom.xml:[0] (misc) NewlineAtEndOfFile: File does not end with a newline.
[ERROR] README.txt:[0] (misc) NewlineAtEndOfFile: File does not end with a newline.

将段落或\ n放在这些文件的末尾并不能解决此问题。 在Window >> Preferences >> Checkstyle >> Select the configuration file >>下的Eclipse中,未列出这些文件。

使用:

  • Windows 10
  • Java 8
  • Eclipse Neon.1(4.6.1)
  • Maven 3.0.4

2 个答案:

答案 0 :(得分:1)

原因是名为NewlineAtEndOfFile检查样式规则,如果项目的任何文件在其末尾没有新行,则会阻止成功构建。

规则说:

  

基本原理:任何源文件和文本文件一般都应该以   一个行分隔符,让其他人轻松添加新内容   file和“diff”命令不会将前一行显示为已更改。

那么必须做的只是在上述日志中提到的每个文件的末尾添加一个新行:

。蚀码格式器-js.xml

。蚀 - 编码 - formatter.xml

。的pom.xml

。的README.txt

有关此规则的更多信息:checkstyle-NewlineAtEndOfFile-rule

答案 1 :(得分:0)

tl; dr:

  1. 运行git config core.autocrlf true
  2. 删除.git以外的所有文件和文件夹
  3. 运行git reset --hard HEAD

细节和根本原因:

  1. Git行结束配置

    Windows上的Git配置是此错误的根本原因。 zanata-platform-platform,以Unix样式行结尾构建。在Windows中,maven会将以LF结尾的Unix样式行误解为以CRLF结尾的不正确的Windows行。

    第一步是重新配置Windows上安装的git,以便在git生成将LF替换为CRLF的文件时。在Windows上,您使用CRLF编辑文件,但是此配置告诉git在提交或推送时将CRLF转换为LF

  2. 删除所有文件,同时保留包含历史记录的.git目录

  3. 让git重新生成Windows样式行结尾的文件。