📄️ Frequently asked questions (FAQ)
Does OpenRewrite collect any data from our projects?
📄️ Latest versions of every OpenRewrite module
OpenRewrite's modules are published to Maven Central.
📄️ Moderne Recipes
This doc includes every recipe that is exclusive to users of Moderne. For a full list of all recipes, check out our recipe catalog. For more information about how to use Moderne for automating code refactoring and analysis at scale, contact us.
📄️ Recipes with Data Tables
This doc contains all of the recipes with **unique** data tables that have been explicitly added by the recipe author. If a recipe contains only the default data tables, it won't be included in this list.
📄️ Maven plugin configuration
The OpenRewrite Maven Plugin is the fastest way to apply OpenRewrite recipes to your code as part of your Maven build. The OpenRewrite Maven Plugin is compatible with all versions of Maven since 3.6.
📄️ Gradle plugin configuration
The OpenRewrite Gradle Plugin is the fastest way to apply OpenRewrite recipes to your code as part of your Gradle build. The OpenRewrite Gradle Plugin is compatible with all versions of Gradle since 4.0.
📄️ Supported languages
As of February 2024, OpenRewrite supports:
📄️ How to use snapshot versions
Right now, OpenRewrite does a full release once every 2-4 weeks. Between those releases, recipes are consistently being added or changed to meet the needs of our users. For many people, it's fine to wait until a new release to get access to these new features or recipes. Others, however, would like to have access right away.
📄️ JsonPath and JsonPathMatcher reference
Despite the name, JsonPathMatcher and JsonPath expressions may be used in other markup languages besides JSON that support it, such as YAML. When we refer to "JSON" keep in mind that JsonPathMatcher and JsonPath expressions apply to markup languages that have a JsonPathMatcher implementation, such as YAML.
📄️ Declarative YAML format
OpenRewrite allows you to create recipes and styles in YAML. While doing so potentially reduces customizability, it makes up for that with development speed and portability.
📄️ Method patterns
Method patterns provide a way to accurately and quickly identify one or more method definitions or invocations. Unlike traditional text-based searches that can result in thousands of irrelevant matches, method patterns are type-aware and will, therefore, only find relevant results.
📄️ Dependency version selectors
Dependency management recipes, such as Upgrade Maven Dependency Version or Add Maven Dependency, accept version numbers as parameters. If you know the exact version number up front you can configure such recipes with it. But the desired version number isn't always knowable up front, or no single version number may be adequate when what is desired can't be known in advance, or might change over time. Dependency management recipes support a variety of version selectors to help express these more complex constraints. These patterns assume that version numbers generally conform to Semantic Versioning.
📄️ Framework provided markers
Not everything a Recipe may wish to know about an LST is contained in the LST itself.
📄️ Building and developing OpenRewrite
Building OpenRewrite
📄️ OpenRewrite recipes created by the community
This doc contains a list of projects that have created OpenRewrite recipes and integrated them into their projects to perform migrations with.