在我的项目中强制使用 CRLF 行分隔符
Forcing CRLF line separator in my project
我想确保在我的项目中使用 CRLF(Windows 样式)行分隔符。我正在检查几个备选方案,但不确定哪个是最好的。
期望的行为:
如果文件不是 CRLF,IntelliJ IDEA 会在底部显示:
我想要我的 maven 配置文件,假设 mvn clean install -P tests 失败,比如 "Invalid line separator, not CRLF"
非常感谢。
我认为不可能由于项目文件中的行分隔符无效而导致 Maven 构建失败,除非有人创建了一个插件来执行此操作。但是,您可以在 Intellij IDEA 中将代码检查配置为因该原因而失败。这就是你如何引发这样的失败:
- 导航至 文件 -> 设置 -> 编辑器 -> 检查 -> 不一致的行分隔符 然后选中 不一致的行分隔符 复选框select Error 来自 Severity:
的下拉列表
- 导航至 文件 -> 设置 -> 编辑器 -> 代码样式 并通过 selecting [=64= 指定默认行分隔符] (\r\n) 来自 行分隔符 下拉列表(如果尚未设置)。
- 使项目中某些打开文件的行分隔符设置无效。例如:文件 -> 行分隔符 -> CR - 经典 Mac (\r)
- 运行 检查您的项目(分析 -> 检查代码 -> 整个项目),您现在应该得到一个错误:
JetBrains 有一份来自 JetBrains 的 open bug ticket to force compilation failure based on inspection errors, so this approach is not exactly what you were asking for. But in the absence of any Maven-based solution it might be best you can do. See the Code Inspection 文档以获取更多信息。
另一种可能的方法是查看 TeamCity,这是另一个用于持续集成的 JetBrains 工具。我没有使用过它,但也许它允许您在出现检查错误时配置失败(尽管快速查看他们的文档我看不出如何操作)。
更新:
看来 TeamCity 还是值得一看的。它的 documentation on Build Failure Conditions 声明:
When using code examining tools in your build, like code coverage,
duplicates finders, inspections and so on, your build generates
various numeric metrics. For these metrics you can specify a threshold
which, when exceeded, will fail a build.
我在 Linux 上遇到了同样的问题。当我提交 IDEA 时,我将行分隔符转换为 LF。当我使用 SmartGit 提交时,所有内容都保留为 CRLF。
我所做的一切 - 命令:
git config --global core.autocrlf false
现在一切都很好。
之前的回答是:
I don't think it is possible to cause the Maven build to fail due to invalid line separators in your project's files unless someone has created a plugin to do that.
但是 是 插件。你可以有一个 :
<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 that should be already activated if you run install.
我想确保在我的项目中使用 CRLF(Windows 样式)行分隔符。我正在检查几个备选方案,但不确定哪个是最好的。
期望的行为:
如果文件不是 CRLF,IntelliJ IDEA 会在底部显示:
我想要我的 maven 配置文件,假设 mvn clean install -P tests 失败,比如 "Invalid line separator, not CRLF"
非常感谢。
我认为不可能由于项目文件中的行分隔符无效而导致 Maven 构建失败,除非有人创建了一个插件来执行此操作。但是,您可以在 Intellij IDEA 中将代码检查配置为因该原因而失败。这就是你如何引发这样的失败:
- 导航至 文件 -> 设置 -> 编辑器 -> 检查 -> 不一致的行分隔符 然后选中 不一致的行分隔符 复选框select Error 来自 Severity: 的下拉列表
- 导航至 文件 -> 设置 -> 编辑器 -> 代码样式 并通过 selecting [=64= 指定默认行分隔符] (\r\n) 来自 行分隔符 下拉列表(如果尚未设置)。
- 使项目中某些打开文件的行分隔符设置无效。例如:文件 -> 行分隔符 -> CR - 经典 Mac (\r)
- 运行 检查您的项目(分析 -> 检查代码 -> 整个项目),您现在应该得到一个错误:
JetBrains 有一份来自 JetBrains 的 open bug ticket to force compilation failure based on inspection errors, so this approach is not exactly what you were asking for. But in the absence of any Maven-based solution it might be best you can do. See the Code Inspection 文档以获取更多信息。
另一种可能的方法是查看 TeamCity,这是另一个用于持续集成的 JetBrains 工具。我没有使用过它,但也许它允许您在出现检查错误时配置失败(尽管快速查看他们的文档我看不出如何操作)。
更新:
看来 TeamCity 还是值得一看的。它的 documentation on Build Failure Conditions 声明:
When using code examining tools in your build, like code coverage, duplicates finders, inspections and so on, your build generates various numeric metrics. For these metrics you can specify a threshold which, when exceeded, will fail a build.
我在 Linux 上遇到了同样的问题。当我提交 IDEA 时,我将行分隔符转换为 LF。当我使用 SmartGit 提交时,所有内容都保留为 CRLF。
我所做的一切 - 命令:
git config --global core.autocrlf false
现在一切都很好。
之前的回答是:
I don't think it is possible to cause the Maven build to fail due to invalid line separators in your project's files unless someone has created a plugin to do that.
但是 是 插件。你可以有一个
<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 that should be already activated if you run install.