Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让Maven检查行的源端?_Java_Maven_Coding Style_End Of Line_Dos2unix - Fatal编程技术网

Java 如何让Maven检查行的源端?

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

出于一致性原因,我希望在项目的Java源代码中强制使用Unix样式的行结束(\n)。由于我们许多人都在Windows下工作,大多数IDE默认配置为使用Windows样式的行结束(\r\n)。每次配置新工作区时,我们都会尝试更改该设置,但由于某些原因,某些文件是在Windows下线提交的

是否有任何Maven配置或插件可以帮助我们强制执行Unix风格的结束行,或者至少警告我们Windows风格的文件


我首先想到了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。