Java 如何让Maven检查行的源端?
出于一致性原因,我希望在项目的Java源代码中强制使用Unix样式的行结束(\n)。由于我们许多人都在Windows下工作,大多数IDE默认配置为使用Windows样式的行结束(\r\n)。每次配置新工作区时,我们都会尝试更改该设置,但由于某些原因,某些文件是在Windows下线提交的 是否有任何Maven配置或插件可以帮助我们强制执行Unix风格的结束行,或者至少警告我们Windows风格的文件Java 如何让Maven检查行的源端?,java,maven,coding-style,end-of-line,dos2unix,Java,Maven,Coding Style,End Of Line,Dos2unix,出于一致性原因,我希望在项目的Java源代码中强制使用Unix样式的行结束(\n)。由于我们许多人都在Windows下工作,大多数IDE默认配置为使用Windows样式的行结束(\r\n)。每次配置新工作区时,我们都会尝试更改该设置,但由于某些原因,某些文件是在Windows下线提交的 是否有任何Maven配置或插件可以帮助我们强制执行Unix风格的结束行,或者至少警告我们Windows风格的文件 我首先想到了PMD或Checkstyle,但看起来并没有那么简单。我也检查了Maven Enfor
我首先想到了PMD或Checkstyle,但看起来并没有那么简单。我也检查了Maven Enforcer插件,但我不认为它是现成的。我应该能够创建自己的规则,但我想确保我不会重新发明轮子:)我不知道如何检查新行字符,但我知道如何自动修复它(我相信这会更好。)
ANT有这样的任务,maven可以运行ANT任务。查看详细信息使用Checkstyle,我们在项目中成功地使用了它来强制使用Unix行结尾
您可以使用正则表达式来执行此操作(windows行结尾是\r\n,但您可能知道这一点)。我们使用以下Checkstyle配置来强制UNIX行结尾:
<module name="RegexpMultiline">
<property name="format" value="\r\n"/>
<property name="maximum" value="0"/>
<property name="message" value="Do not use Windows line endings"/>
</module>
我认为让maven修改源代码(如果不是为生成的源代码)不是一个好主意。您的需求更适合预提交钩子。您好,Alex,您是对的,自动修复它会更好,但问题是,在执行Maven时,源文件通常已经提交并推送到中央存储库。或者我从你的答案中漏掉了什么?很好很简单,我喜欢:)我能看到的唯一缺点是每行有一个错误,而不是一个文件一个错误,但这没什么大不了的!只需创建一个只与第一个windows换行符匹配的regexp。如何创建一个只与每个文件的第一个windows换行符匹配的regexp?我将RegexpMultiline与format=“\r\n”一起使用,但以Windows新行结尾的每一行都被检测为错误。“\r\n.*”不起作用(它仍然检测每行一个错误),但“(?s:\r\n.*)”似乎可以完成此任务!谢谢您的帮助。添加一些关于如何在Checkstyle上配置的详细信息如何?这与@florent paillard的建议“(?s:\r\n.*)”作为一种格式将起到作用。甚至不需要maximum
属性,因为默认情况下它是0。