Forcing CRLF line separator in my project

I had the same issue on Linux. When I commit with IDEA then I get my line separators converted to LF. When I do commit with SmartGit then all stays CRLF.

All I did - command:

git config --global core.autocrlf false

And now everything is fine.


Previous answer stated:

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.

But there is plugins for that. You can have a 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>

And then configure build to use checkstyle plugin:

<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>

It binds to "verify" phase by default that should be already activated if you run install.


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. However, you can configure a code inspection in Intellij IDEA to fail for that reason. This is how you could provoke such a failure:

  • Navigate to File -> Settings -> Editor -> Inspections -> Inconsistent Line Separators then check the box for Inconsistent Line Separators and select Error from the drop list for Severity:

IDEAsettings

  • Navigate to File -> Settings -> Editor -> Code Style and specify the default line separator by selecting Windows (\r\n) from the Line separator drop list (if not already set).
  • Invalidate the line separator setting for some open file in your project. For example: File -> Line Separators -> CR - Classic Mac (\r)
  • Run an inspection on your project (Analyze -> Inspect Code -> Whole Project) and you should now get an error:

IDEAinspection

JetBrains has an 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 documentation from JetBrains for more information.

One other possible approach is to look at TeamCity, another JetBrains tool for continuous integration. I haven't used it, but perhaps it allows you to configure failure when there are inspection errors (though from a quick look at their documentation I couldn't see how).


Update:

It looks like TeamCity might be worth a look after all. Its documentation on Build Failure Conditions states:

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.