Giter VIP home page Giter VIP logo

prettier-maven-plugin's Introduction

prettier-maven-plugin

Maven plugin for running prettier-java during a build. Node, prettier, and prettier-java are bundled into the plugin.

There is a check goal which (optionally) fails the build if code isn't formatted correctly, and a write goal which rewrites the source code in place. A common setup might be to use the write goal during local builds, and the check goal during CI builds.

Example Usage

This example will run the check goal inside of Travis CI, and the write goal outside of Travis CI. You can update the profile activation conditions based on the CI tool you use.

<properties>
  <!-- By default just re-write code with prettier -->
  <plugin.prettier.goal>write</plugin.prettier.goal>
</properties>

<build>
  <plugins>
    <plugin>
      <groupId>com.hubspot.maven.plugins</groupId>
      <artifactId>prettier-maven-plugin</artifactId>
      <version>0.16</version>
      <configuration>
        <prettierJavaVersion>1.5.0</prettierJavaVersion>
        <printWidth>90</printWidth>
        <tabWidth>2</tabWidth>
        <useTabs>false</useTabs>
        <ignoreConfigFile>true</ignoreConfigFile>
        <ignoreEditorConfig>true</ignoreEditorConfig>
        <!-- Use <inputGlobs> to override the default input patterns -->
        <inputGlobs>
          <!-- These are the default patterns, you can omit <inputGlobs> entirely unless you want to override them -->
          <inputGlob>src/main/java/**/*.java</inputGlob>
          <inputGlob>src/test/java/**/*.java</inputGlob>
        </inputGlobs>
      </configuration>
      <executions>
        <execution>
          <phase>validate</phase>
          <goals>
            <goal>${plugin.prettier.goal}</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

<profiles>
  <profile>
    <id>travis</id>
    <activation>
      <property>
        <name>env.TRAVIS</name>
      </property>
    </activation>
    <properties>
      <!-- But in our CI environment we want to validate that code is formatted -->
      <plugin.prettier.goal>check</plugin.prettier.goal>
    </properties>
  </profile>
</profiles>

You can also run in a one-off fashion via the commandline:
mvn prettier:check
or
mvn prettier:write

You can also run mvn prettier:print-args in order to confirm the configuration values

To format additional directories or file types via the commandline, you can pass a comma-separated list of patterns, for example:
mvn prettier:write '-Dprettier.inputGlobs=src/main/java/**/*.java,src/test/java/**/*.java,src/main/js/**/*.js'

Configuration

If you want to customize the behavior of prettier, you can use a normal prettier configuration file. Alternatively, you can configure prettier directly via the Maven plugin using the following options:

Name -D property name Default Value Description
skip N/A false If set to true, plugin execution will be skipped
fail N/A true Only appplies to check goal. If set to true, the plugin execution will fail if any unformatted files are found
generateDiff N/A false Only appplies to check goal. Be sure to have to sh and diff in your PATH. If set to true, a diff will be generated between the current code and the prettier-formatted code.
diffGenerator prettier.diffGenerator _ Only appplies to check goal. Can be used to supply a custom implementation of DiffGenerator
nodeVersion prettier.nodeVersion 16.13.1 Controls version of Node used to run prettier-java.
nodePath prettier.nodePath - Can be used to supply your own node executable, rather than having the plugin download it. To use the version of node on your $PATH, you can simply set this option to node.
npmPath prettier.npmPath - Can be used to supply your own npm executable, rather than having the plugin download it. To use the version of npm on your $PATH, you can simply set this option to npm.
prettierJavaVersion prettier.prettierJavaVersion 0.7.0 Controls version of prettier-java that is used.
printWidth prettier.printWidth null If set, will be passed to prettier as --print-width. More information here
tabWidth prettier.tabWidth null If set, will be passed to prettier as --tab-width. More information here
useTabs prettier.useTabs null If set, will be passed to prettier as --use-tabs. More information here
endOfLine prettier.endOfLine null If set, will be passed to prettier as --end-of-line. More information here
ignoreConfigFile prettier.ignoreConfigFile false If set to true, pretter will be invoked with --no-config. More information here
ignoreEditorConfig prettier.ignoreEditorConfig false If set to true, pretter will be invoked with --no-editorconfig. More information here
inputGlobs prettier.inputGlobs src/{main,test}/java/**/*.java Controls the input paths passed to prettier, useful for formatting additional directories or file types. More information here

Note

For convenience, this plugin downloads Node, prettier, and prettier-java as needed. Node is downloaded from https://nodejs.org/dist/ and prettier-plugin-java is downloaded via npm

prettier-maven-plugin's People

Contributors

clementdessoude avatar deftdawg avatar dependabot[bot] avatar hs-jenkins-bot avatar jhaber avatar morganwu277 avatar msaguer avatar phlppnhllngr avatar sanjayrawat1 avatar spitfjre avatar stevie400 avatar trushev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.