We adhere to the keepachangelog format (starting after version 1.27.0
).
formatAnnotations
step to correct formatting of Java type annotations. It puts type annotations on the same line as the type that they qualify. Run it after a Java formatting step, such asgoogleJavaFormat
. (#1275)
- Bump default
ktfmt
version to latest0.39
->0.40
(#1312)
scalafmt
integration now has a configuration optionmajorScalaVersion
that allows you to configure the Scala version that gets resolved from the maven artifact (#1283)
- Add the
ktlint
rule in error messages whenktlint
fails to apply a fix (#1279) - Bump default
scalafmt
to latest3.0.8
->3.5.9
(removed support for pre-3.0.0
) (#1283)
- Bump default
diktat
version to latest1.2.1
->1.2.3
(#1266)
- Clang and Black no longer break the build when the binary is unavailable, if they will not be run during that build (#1257).
- License header support for Kotlin files without
package
or@file
but do at least haveimport
(#1263).
- Bump default
ktlint
version to latest0.45.2
->0.46.1
(#1239)- Minimum supported version also bumped to
0.46.0
(we have abandoned strong backward compatibility forktlint
, from here on out Spotless will only support the most-recent breaking change).
- Minimum supported version also bumped to
- Bump default
diktat
version to latest1.1.0
->1.2.1
(#1246)- Minimum supported version also bumped to
1.2.1
(diktat is based on ktlint and has the same backward compatibility issues).
- Minimum supported version also bumped to
- Bump default
ktfmt
version to latest0.37
->0.39
(#1240)
PalantirJavaFormatStep
no longer needs the--add-exports
calls inMAVEN_OPTS
or.mvn/jvm.config
. (#1233)
- (Second try)
googleJavaFormat
andremoveUnusedImports
works on JDK16+ without jvm args workaround. (#1228)- If you have a bunch of
--add-exports
calls inMAVEN_OPTS
or.mvn/jvm.config
, you should be able to remove them. (fixes #834)
- If you have a bunch of
googleJavaFormat
andremoveUnusedImports
works on JDK16+ without jvm args workaround. (#1224)- If you have a bunch of
--add-exports
calls inMAVEN_OPTS
or.mvn/jvm.config
, you should be able to remove them. (fixes #834)
- If you have a bunch of
- Update the
black
version regex to fix19.10b0
and earlier. (fixes #1195, regression introduced in2.22.2
)
- Bump default
ktfmt
version to latest0.36
->0.37
. (#1200)
- Bump default
diktat
version to latest1.0.1
->1.1.0
. (#1190)
- Bump default
ktfmt
version to latest0.35
->0.36
. (#1183) - Bump default
google-java-format
version to latest1.13.0
->1.15.0
.This means it is no longer necessary to use the--add-exports
workaround (fixes #834).--add-exports
workaround is still needed.
- Fixed support for Python Black's new version reporting. (#1170)
- Error messages for unexpected file encoding now works on Java 8. (fixes #1081)
- Bump default
black
version to latest19.10b0
->22.3.0
. (#1170) - Bump default
ktfmt
version to latest0.34
->0.35
. (#1159) - Bump default
ktlint
version to latest0.43.2
->0.45.2
. (#1177)
- Git user config and system config also included for defaultEndings configuration. (#540)
- Added support for setting custom parameters for Kotlin ktfmt in Maven plugin. (#1145)
- Magic value 'NONE' for disabling ratchet functionality (#1134)
- Use SLF4J for logging (#1116)
- Bump default ktfmt
0.30
->0.31
(#1118).
- Add full support for git worktrees (#1119).
- Bump default versions of formatters (#1095).
- google-java-format
1.12.0
->1.13.0
- ktfmt
0.29
->0.30
- google-java-format
- Added support for git property
core.autocrlf
(#540)
- Added support for the palantir-java-format Java formatter (#1083).
- Enabling the upToDateChecking with the plugin configured inside pluginManagement, with an additional dependency and running under Maven 3.6.3 leads to a java.io.NotSerializableException. (#1074).
- Update IndentStep to allow leading space on multiline comments (#1072).
- Support custom index files for incremental up-to-date checking (#1055).
- Remove Java files from default Maven Groovy formatting (#1051).
- Before this release, the default target of groovy was
src/main/groovy/**/*.groovy
src/test/groovy/**/*.groovy
src/main/java/**/*.java
src/test/java/**/*.java
- This release removes the
.java
includes.
- Before this release, the default target of groovy was
- Bumped default DiKTat from
0.4.0
to1.0.1
. This is a breaking change for DiKTat users on the default version, because some rules were renamed/changed. Check DiKTat changelog for details.
ratchetFrom
is now faster (#1038).
- Bumped default ktlint from
0.43.0
to0.43.2
.
- Bump jgit version (#992).
- jgit
5.10.0.202012080955-r
->5.13.0.202109080827-r
- jgit
- Bump default formatter versions (#989)
- google-java-format
1.11.0
->1.12.0
- ktlint
0.42.1
->0.43.0
- ktfmt
0.27
->0.29
- scalafmt
3.0.0
->3.0.8
- google-java-format
- Added support and bump Eclipse formatter default versions to
4.21
foreclipse-groovy
. Change is only applied for JVM 11+. - Added support for ktlint's FilenameRule (#974).
- Revert change from 2.17.2 regarding skip bug because fixing the skip bug caused inconsistent behavior between
check.skip
andapply.skip
. - skip bug if ratchetFrom is specified, the build will still fail in if no Git repository is found, even if
skip
is true (new fix).
- Temporary workspace deletion for Eclipse based formatters on JVM shutdown (#967). Change is only applied for Eclipse versions using JVM 11+, no back-port to older versions is planned.
- skip bug if ratchetFrom is specified, the build will still fail in if no Git repository is found, even if
skip
is true.
- module-info formatting in
eclipse-jdt
versions4.20
and4.21
. Note that the problem also affects older versions. - Added workaround to support projects using git worktrees (#965)
- Added
wildcardsLast
option for JavaimportOrder
(#956)
- Added support for JBDI bind list params in sql formatter (#955)
- Added support for custom JSR223 formatters (#945)
- Added support for formatting and sorting Maven POMs (#946)
- Added support for calling local binary formatters (#949)
- Added support and bump Eclipse formatter default versions to
4.21
foreclipse-cdt
,eclipse-jdt
,eclipse-wtp
. Change is only applied for JVM 11+. - Added
groupArtifact
option forgoogle-java-format
(#944)
- Added support and bump Eclipse formatter default versions for JVM 11+. For older JVMs the previous defaults remain.
eclipse-cdt
from4.16
to4.20
eclipse-groovy
from4.19
to4.20
eclipse-jdt
from4.19
to4.20
eclipse-wtp
from4.18
to4.20
- Added support for
google-java-format
'sskip-reflowing-long-strings
option (#929)
- Added support for scalafmt 3.0.0 and bump default scalafmt version to
3.0.0
(#913). - Bump default versions (#915)
ktfmt
from0.24
to0.27
ktlint
from0.35.0
to0.42.1
google-java-format
from1.10.0
to1.11.0
- Improved SQL formatting with respect to comments
- Fixed IndexOutOfBoundsException in parallel execution of
eclipse-groovy
formatter (#877)
- Added support for
eclipse-cdt
at4.19.0
. Note that version requires Java 11 or higher. - Added support for
eclipse-groovy
at4.18.0
and4.19.0
. - Added support for
eclipse-wtp
at4.19.0
. Note that version requires Java 11 or higher.
- Bump
eclipse-groovy
default version from4.17.0
to4.19.0
.
- Node is re-installed if some other build step removed it (#863)
- Update ktfmt from 0.21 to 0.24
- The
<url>
field in the maven POM is now set correctly (#798)
- Explicitly separate target file from git arguments when parsing year for license header to prevent command from failing on argument-like paths (#847)
- LicenseHeaderStep treats address as copyright year (#716)
- Fix license header bug for years in range (#840).
- Added support for
eclipse-jdt
at4.19.0
.
- Bump
eclipse-jdt
default version from4.18.0
to4.19.0
. - Bump
google-java-format
default version from1.9
to1.10.0
. - Expose configuration exceptions from scalafmt (#837)
- Bump ktfmt to 0.21 and add support to Google and Kotlinlang formats (#812)
- Allow licence headers to be blank (#801).
- Support for diktat (#789)
- Added ability to specify dropbox style for ktfmt
<style>DROPBOX</style>
(#764) - Added support for
eclipse-cdt
,eclipse-jdt
, andeclipse-wtp
at4.18.0
.
- Bump
eclipse-jdt
default version from4.17.0
to4.18.0
. - Bump
eclipse-wtp
default version from4.17.0
to4.18.0
. - Bump
ktfmt
default version from0.16
to0.19
(#748 and #773).
- Fixed
ratchetFrom
support for git-submodule (#746). - Fixed
ratchetFrom
excess memory consumption (#735). ktfmt
v0.19+ with dropbox-style works again (#765).prettier
no longer throws errors on empty files (#751).- Fixed error when running on root of windows mountpoint (#760).
- Fix broken test for spotlessFiles parameter on windows (#737).
- Fixed a bug which occurred if the root directory of the project was also the filesystem root (#732).
- Upgraded org.codehaus.plexus:plexus-utils to its latest version (3.3.0) to improve directory scanning time (#729).
- Whether this helps with the directory scanning time is unconfirmed, please report your experience in the issue above.
- Added support to npm-based steps for picking up
.npmrc
files (#727)
- Fixed bug in import order which woudld cause trailing empty strings to get dropped (731)
- e.g.
<importorder><order>java,javafx,com.mycompany,</order></importorder>
- e.g.
- Bump JGit from
5.8.0
to5.9.0
to improve performance (#726)
- Added support for eclipse-cdt 4.14.0, 4.16.0 and 4.17.0 (#722).
- Added support for eclipse-groovy 4.14.0, 4.15.0, 4.16.0 and 4.17.0 (#722).
- Added support for eclipse-jdt 4.17.0 (#722).
- Added support for eclipse-wtp 4.14.0, 4.15.0, 4.16.0 and 4.17.0 (#722).
- Updated default eclipse-cdt from 4.13.0 to 4.16.0 (#722). Note that version 4.17.0 is supported, but requires Java 11 or higher.
- Updated default eclipse-groovy from 4.13.0 to 4.17.0 (#722).
- Updated default eclipse-jdt from 4.16.0 to 4.17.0 (#722).
- Updated default eclipse-wtp from 4.13.0 to 4.17.0 (#722).
- Improve speed by ~4x when using
<ratchetFrom>
(#701).
- Don't assume that file content passed into Prettier is at least 50 characters (#699).
- Improved JRE parsing to handle strings like
16-loom
(fixes #693). - Added support for groovy formatting (#697)
- New option
<toggleOffOn />
which allows the tagsspotless:off
andspotless:on
to protect sections of code from the rest of the formatters (#691).
- When applying license headers for the first time, we are now more lenient about parsing existing years from the header (#690).
<googleJavaFormat>
default version is now1.9
on JDK 11+, while continuing to be1.7
on earlier JDKs. This is especially helpful to<removeUnusedImports />
, since it always uses the default version of GJF (fixes #681).
- Added support for eclipse-jdt 4.14.0, 4.15.0 and 4.16.0 (#678).
- Updated default eclipse-jdt from 4.13.0 to 4.16.0 (#678).
<ktlint>
is now more robust when parsing version string for version-dependent implementation details, fixes #668.
- Bump default ktfmt from 0.13 to 0.16 (#642).
<importOrder />
was broken (fixes #663).<ratchetFrom>
was broken when set at global level (fixes #664).
- Git-native handling of line endings was broken, now fixed (#639).
- You can now ratchet a project's style by limiting Spotless only to files which have changed since a given git reference, e.g.
ratchetFrom 'origin/main'
. (#590) - Huge speed improvement for multi-module projects thanks to improved cross-project classloader caching (#571, fixes #559).
- If you specify
-DspotlessSetLicenseHeaderYearsFromGitHistory=true
, Spotless will perform an expensive search through git history to determine the oldest and newest commits for each file, and uses that to determine license header years. (#626) prettier
will now autodetect the parser (and formatter) to use based on the filename, unless you override this usingconfig
orconfigFile
with the optionparser
orfilepath
(#620).- Added ANTLR4 support (#326).
- BREAKING the default includes for
<typescript>
and<cpp>
were removed, and will now generate an error if an<include>
is not specified. There is no well-established convention for these languages in the maven ecosystem, and the performance of the default includes is far worse than a user-provided one. If you dislike this change, please complain in #634, it would not be a breaking change to bring the defaults back. - BREAKING inside the
<cpp>
block,<eclipse>
has been renamed to<eclipseCdt>
to avoid any confusion with the java<eclipse>
(#636). - BREAKING the long-deprecated
<xml>
and<css>
formats have been removed, in favor of the long-available<eclipseWtp>
step which is available in every generic format (#630).- This probably doesn't affect you, but if it does, you just need to change
<xml>...
into<formats><format><eclipseWtp><type>XML</type>...
- In
1.15.0
(released 2018-09-23), we added support forxml
andcss
formats using the Eclipse WTP. - In
1.18.0
(released 2019-02-11), we deprecated these, in favor of the genericeclipseWtp
step which is available for all generic formats. This allows you to have multiple XML and CSS formats, rather than just one. - And now we removed them entirely.
- This probably doesn't affect you, but if it does, you just need to change
- Nodejs-based formatters
prettier
andtsfmt
now use native node instead of the J2V8 approach. (#606)- This removes the dependency to the no-longer-maintained Linux/Windows/macOs variants of J2V8.
- This enables spotless to use the latest
prettier
versions (instead of being stuck at prettier version <=1.19.0
) - Bumped default versions, prettier
1.16.4
->2.0.5
, tslint5.12.1
->6.1.2
licenseHeader
is now more robust when parsing years from existing license headers. (#593)
- Shared library used by the nodejs-based steps used to be extracted into the user home directory, but now it is extracted into a temporary directory and deleted on VM shutdown. (#586)
- If you specified a config file for a formatter, it used to be needlessly copied to a randomly-named file in the build folder. This could cause performance to suffer, especially for large multi-project builds that use eclipse. (#572)
- Note: if you are extracting config files from resource jars, we still have bad performance for this case, see #559 for details.
- If the encoding was set incorrectly,
spotless:apply
could clobber special characters. Spotless now prevents this, and helps to suggest the correct encoding. (#575)
- Support for google-java-format 1.8 (requires build to run on Java 11+) (#562)
- Support for ktfmt 0.13 (requires build to run on Java 11+) (#569)
mvn spotless:apply
is now guaranteed to be idempotent, even if some of the formatters are not. SeePADDEDCELL.md
for details if you're curious. (#565)- Updated a bunch of dependencies, most notably jgit
5.5.0.201909110433-r
->5.7.0.202003110725-r
. (#564)
- Support for prettier (#555).
- Support for tsfmt (#548).
- Eclipse-WTP formatter (web tools platform, not java) handles some character encodings incorrectly on OS with non-unicode default file encoding #545. Fixed for Eclipse-WTP formatter Eclipse version 4.13.0 (default version).
- Enable IntelliJ-compatible token
$today.year
for specifying the year in license header files. (#542)
- Fix scala and kotlin maven config documentation.
- Eclipse-WTP formatter (web tools platform, not java) could encounter errors in parallel multiproject builds #492. Fixed for Eclipse-WTP formatter Eclipse version 4.13.0 (default version).
- Should be no changes whatsoever! Released only for consistency with lib and plugin-gradle.
- Revert the change in console display of errors from 1.26.0 (#485) because of these problems.
- Bugfix: Fix NPE in EclipseXmlFormatterStepImpl (#489)
- Fix project URLs in poms. (#478)
- Fix
ImportSorter
crashing with empty files. (#474)- Fixes #305 StringIndexOutOfBoundsException for empty Groovy file when performing importOrder
- Bugfix: CDT version
4.12.0
now properly uses9.8
, whereas before it used9.7
. (#482) - Updated default eclipse-wtp from 4.12.0 to 4.13.0 (#482)
- Updated default eclipse-groovy from 4.12.0 to 4.13.0 (#482)
- Updated default eclipse-jdt from 4.12.0 to 4.13.0 (#482)
- Updated default eclipse-cdt from 4.12.0 to 4.13.0 (#482)
- Bump default version of KtLint from
0.34.2
to0.35.0
. (#473) - Several improvements to the console display of formatting errors. (#465)
- Fixed problem which could cause a stale
.jar
to be published. (#471)
- KNOWN ISSUE: published jar is the same as
1.24.3
, causesInvalid plugin descriptor
. (#470) - Add support for ktlint
0.34+
, and bump default version from0.32.0
to0.34.2
. (#469)
- Update jgit from
5.3.2.201906051522-r
to5.5.0.201909110433-r
. (#445)- Fixes #410 AccessDeniedException in MinGW/ GitBash.
- Also fixes occasional hang on NFS due to filesystem timers.
- Eclipse-based formatters used to leave temporary files around (#447). This is now fixed, but only for eclipse 4.12+, no back-port to older Eclipse formatter versions is planned. (#451)
- Bumped
scalafmt
default version from1.1.0
to2.0.1
, since there are bugs in the old default (#458).
- Fixes class loading issue with Java 9+ (#426).
- Updated default eclipse-wtp from 4.8.0 to 4.12.0 (#423).
- Updated default eclipse-groovy from 4.10 to 4.12.0 (#423).
- Updated default eclipse-jdt from 4.11.0 to 4.12.0 (#423).
- Updated default eclipse-cdt from 4.11.0 to 4.12.0 (#423).
- KNOWN BUG - accidentally published CDT 9.7 rather than 9.8 fixed in 1.26.0
- Added new maven coordinates for scalafmt 2.0.0+, maintains backwards compatability (#415)
- Fixes incorrect M2 cache directory path handling of Eclipse based formatters (#401)
- Update jgit from
4.9.0.201710071750-r
to5.3.2.201906051522-r
because gradle project is sometimes broken byapache httpcomponents
in transitive dependency. (#407)
- Updated default ktlint from 0.21.0 to 0.32.0, and Maven coords to com.pinterest (#394)
- Updated default eclipse-cdt from 4.7.3a to 4.11.0 (#390).
- Added
-DspotlessFiles
switch to allow targeting specific files (#392)
- Fixes incorrect plugin and pom metadata in
1.21.0
(#388).
- Updated default eclipse-wtp from 4.7.3b to 4.8.0 (#382).
- Updated default eclipse-groovy from 4.8.1 to 4.10.0 (#382).
- Updated default eclipse-jdt from 4.10.0 to 4.11.0 (#384).
- Updated default eclipse-wtp from 4.7.3a to 4.7.3b (#371).
- Default behavior of XML formatter changed to ignore external URIs (#369).
- WARNING RESOLVED: By default, xml formatter no longer downloads external entities. You can opt-in to resolve external entities by setting resolveExternalURI to true. However, if you do opt-in, be sure that all external entities are referenced over https and not http, or you may be vulnerable to XXE attacks.
WARNING: xml formatter in this version may be vulnerable to XXE attacks, fixed in 1.20.0 (see #358).
- Security fix: Updated groovy, c/c++, and eclipse WTP formatters so that they download their source jars securely using
https
rather thanhttp
(#360). - Updated default eclipse-jdt from 4.9.0 to 4.10.0 (#368)
- Add a skip parameter to apply mojo to enable to bypass it if desired. (#367).
WARNING: xml formatter in this version may be vulnerable to XXE attacks, fixed in 1.20.0 (see #358).
- Provided eclipse-wtp formatters as part of custom source format element. (#325). This change obsoletes the CSS and XML source elements.
- Updated default google-java-format from 1.5 to 1.7 (#335).
<importOrder><file>somefile</file></importOrder>
is now lazy (#218).
WARNING: xml formatter in this version may be vulnerable to XXE attacks, fixed in 1.20.0 (see #358).
- Updated default eclipse-jdt from 4.7.3a to 4.9.0 (#316). New version addresses enum-tab formatting bug in 4.8 (#314).
WARNING: xml formatter in this version may be vulnerable to XXE attacks, fixed in 1.20.0 (see #358).
- Added support for Eclipse's CSS formatter from WTP (#311).
WARNING: xml formatter in this version may be vulnerable to XXE attacks, fixed in 1.20.0 (see #358).
- Added
xml
support (#140) using formatter of Eclipse WTP 3.9.5 (#241). - Added C/C++ support using formatter of Eclipse CDT 9.4.3 (#232).
- Skip
package-info.java
andmodule-info.java
files from license header formatting. (#273) - Updated JSR305 annotation from 3.0.0 to 3.0.2 (#274)
- Migrated from FindBugs annotations 3.0.0 to SpotBugs annotations 3.1.6 (#274)
- Fix Maven version prerequisite in the generated POM (#289)
- Updated default eclipse-jdt from 4.7.2 to 4.7.3a (#263). New version fixes a bug preventing Java code formatting within JavaDoc comments (#191).
- Updated default groovy-eclipse from 4.6.3 to 4.8.0 (#244). New version allows to ignore internal formatter errors/warnings.
- Require 3.1.0+ version of Maven. (#259)
- Fixed integration with latest versions of scalafmt. (#260)
- Fixed a bug in configuration file resolution on Windows when file is denoted by a URL. (#254)
- Fixed a bug in
LicenseHeaderStep
which caused an exception with some malformed date-aware licenses. (#222) - Added support for Kotlin and Ktlint in Maven plugin (#223).
- Updated default ktlint from 0.14.0 to 0.21.0
- Added support for multiple generic formatters in Maven plugin (#242).
- Fixed published POM to include dependency on plexus-resources (#213).
- Improved support for multi-module Maven projects (#210).
- Added generic format support for maven-plugin (#209).
- Fix build to ensure that published versions never have snapshot deps (#205).
- Maven plugin written by Konstantin Lutovich.
- Full support for the Java and Scala formatters.
- Initial release, after user feedback we will ship
1.x
.