我想确保项目中的CRLF(Windows样式)行分隔符。我正在检查一些替代方案,但不确定哪一个是最好的。
所需行为:
如果文件不是CRLF,则IntelliJ IDEA显示在底部:
我想要我的maven个人资料,让我们说 mvn clean install -P tests 失败,说“无效的行分隔符,而不是CRLF”
非常感谢。
答案 0 :(得分:5)
我不认为由于项目文件中的行分隔符无效而导致Maven构建失败,除非有人创建了一个插件来执行此操作。但是,您可以在Intellij IDEA中配置代码检查,因此失败。这就是你如何引发这样的失败:
JetBrains有open bug ticket根据检查错误强制编译失败,因此这种方法并不完全符合您的要求。但是,如果没有任何基于Maven的解决方案,那么你可以做到最好。有关详细信息,请参阅JetBrains的Code Inspection文档。
另一种可能的方法是查看另一个JetBrains工具TeamCity以进行持续集成。我还没有使用它,但也许它允许你在出现检查错误时配置故障(虽然从他们的文档中快速查看我无法看到)。
<强>更新强>
看起来TeamCity可能值得一看。其documentation on Build Failure Conditions州:
在构建中使用代码检查工具时,例如代码覆盖率, 重复查找程序,检查等,您的构建生成 各种数字指标。 对于这些指标,您可以指定阈值 当超出时,将无法构建。
答案 1 :(得分:0)
我在Linux上遇到了同样的问题。当我使用IDEA提交时,我将行分隔符转换为LF。当我提交SmartGit时,所有内容都会保持CRLF。
我所做的-命令:
git config --global core.autocrlf false
现在一切都很好。
答案 2 :(得分:0)
先前的回答:
我认为,除非有人创建了插件来执行此操作,否则由于项目文件中无效的行分隔符,可能导致Maven构建失败。
但是有 个插件。例如,您可以拥有checkstyle rule:
<module name="RegexpMultiline">
<property name="format" value="(?<!\r)\n"/>
<property name="maximum" value="0"/>
<property name="message" value="Invalid line separator, not CRLF"/>
</module>
然后将构建配置为使用checkstyle插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<failsOnError>true</failsOnError>
<consoleOutput>true</consoleOutput>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<checkstyleRules>
<module name="Checker">
<module name="RegexpMultiline">
<property name="format" value="(?<!\r)\n"/>
<property name="maximum" value="0"/>
<property name="message" value="Invalid line separator, not CRLF"/>
</module>
</module>
</checkstyleRules>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>checkstyle</goal>
</goals>
</execution>
</executions>
</plugin>
binds to "verify" phase by default是should be already activated if you run install。