Fork me on GitHub

Introduction

editorconfig-maven-plugin is a Maven plugin for checking whether project files comply with format rules defined in .editorconfig files and eventually also for fixing the violations.

editorconfig-maven-plugin is new. Expect issues of all kinds which is not to say that you should not report them :)

Basic usage

editorconfig-maven-plugin requires Java 1.7+ and Maven ${project.prerequisites.maven}+.

To make the build fail if any of your source files does not comply with .editorconfig rules, add the following to your project:

  <plugin>
    <groupId>org.ec4j.maven</groupId>
    <artifactId>editorconfig-maven-plugin</artifactId>
    <version>0.0.9</version>
    <executions>
      <execution>
        <id>check</id>
        <phase>verify</phase>
        <goals>
          <goal>check</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <excludes>
        <!-- Note that maven submodule directories and many non-source file patterns are excluded by default -->
        <!-- - see https://github.com/ec4j/editorconfig-maven-plugin/blob/master/ec4j-lint-api/src/main/java/org/ec4j/maven/lint/api/Constants.java#L37
        <!-- You can exclude further files from processing: -->
        <exclude>src/main/**/*.whatever</exclude>
      </excludes>
      <!-- All files are included by default:
      <includes>
        <include>**</include>
      </includes>
      -->
    </configuration>
  </plugin>

In case any violations are detected, you may want to fix them automagically by running

mvn editorconfig:format

How it works

editorconfig-maven-plugin is designed around the Linter interface. Linter is a processor specialized for some particular file format (such as YAML or XML) for which it can detect whether some particular .editorconfig properties are satisfied and eventually propose a fix that can be applied automatically.

Table 1. Linters available in editorconfig-maven-plugin
Class name Default includes Default excludes Supported .editorconfig properties

TextLinter

**/*

end_of_line, trim_trailing_whitespace, insert_final_newline

XmlLinter

**/*.xml, **/*.xsl

indent_style, indent_size

Contributions of further Linters are highly welcome! Please open an issue when you start working on something to avoid duplicate work.