8.64.0 release (2025-10-22)
Total recipe count: 4942
info
This changelog only shows what recipes have been added, removed, or changed. OpenRewrite may do releases that do not include these types of changes. To see these changes, please go to the releases page.
Corresponding CLI version
- Stable CLI version
v3.49.0 - Staging CLI version:
v3.50.0
New Artifacts
- rewrite-toml
New Recipes
- io.moderne.java.spring.boot.FieldToConstructorInjection: Converts
@Autowiredfield injection to constructor injection pattern. For non-final classes, adds both a no-args constructor and the autowired constructor to maintain compatibility with extending classes. Moves@Qualifierannotations to constructor parameters. - io.moderne.java.spring.framework.beansxml.BeansXmlToConfiguration: Converts Java/Jakarta EE
beans.xmlconfiguration files to Spring Framework@Configurationclasses. - io.quarkus.updates.camel.camel415.CamelQuarkusMigrationRecipe: Migrates
camel 4.14Quarkus application tocamel 4.15. - org.apache.camel.upgrade.camel415.CamelMigrationRecipe: Migrates
camel 4.14application tocamel 4.15. - org.apache.camel.upgrade.camel415.aiNestedHeadersClasses: Changed types of camel AI nested headers classes.
- org.apache.camel.upgrade.camel415.dataFormats: Refactored dataFormats.
- org.apache.camel.upgrade.camel415.nettyAndNettyHttp: Changed parameter in camel-netty and camel-netty-http + enhanced value.
- org.apache.camel.upgrade.camel415.xmlDataFormats: Refactored dataFormats (XML DSL).
- org.apache.camel.upgrade.camel415.yamDataFormats: Refactored dataFormats (YAML DSL).
- org.apache.camel.upgrade.customRecipes.ReplacePropertyInComponentXml: Apache Camel XML DSL migration from version 4.9 o 4.10.
- org.apache.camel.upgrade.customRecipes.ReplacePropertyInComponentYaml: ARenames property of the component.
- org.apache.camel.upgrade.customRecipes.ReplacePropertyInDataFormatXml: Apache Camel XML DSL migration from version 4.9 o 4.10.
- org.apache.camel.upgrade.customRecipes.ReplacePropertyInDataFormatYaml: ARenames property of the component.
- org.openrewrite.featureflags.RemoveDoubleFlag: Replace method invocations for feature key with value, and simplify constant if branch execution.
- org.openrewrite.featureflags.RemoveIntegerFlag: Replace method invocations for feature key with value, and simplify constant if branch execution.
- org.openrewrite.featureflags.launchdarkly.RemoveDoubleVariation: Replace
doubleVariationinvocations for feature key with value, and simplify constant if branch execution. - org.openrewrite.featureflags.launchdarkly.RemoveIntVariation: Replace
intVariationinvocations for feature key with value, and simplify constant if branch execution. - org.openrewrite.featureflags.openfeature.RemoveGetDoubleValue: Replace
getDoubleValue()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.featureflags.openfeature.RemoveGetIntegerValue: Replace
getIntegerValue()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.featureflags.openfeature.RemoveGetStringValue: Replace
getStringValue()invocations forfeatureKeywithreplacementValue, and simplify constant if branch execution. - org.openrewrite.java.jackson.ReplaceStreamWriteCapability: In Jackson 3,
JsonGenerator.canWriteBinaryNatively()andcanWriteFormattedNumbers()were removed and replaced with theStreamWriteCapabilityenum. This recipe updates these method calls to usegetWriteCapabilities().isEnabled(StreamWriteCapability.*)instead. - org.openrewrite.java.migrate.guava.NoGuavaPredicatesAndOr: Prefer
Predicate.and(Predicate)overPredicates.and(Predicate, Predicate). - org.openrewrite.java.search.HasMethod: Marks files that have at least one occurrence of a method matching a pattern.
- org.openrewrite.java.search.HasType: Marks files that have at least one occurrence of a type, even if the name of that type doesn't appear in the source code.
- org.openrewrite.java.spring.SeparateApplicationPropertiesByProfile: Separating
application.propertiesinto separate files based on profiles. - org.openrewrite.java.spring.security6.UpgradeSpringSecurity_6_5: Migrate applications to the latest Spring Security 6.5 release. This recipe will modify an application's build files, make changes to deprecated/preferred APIs, and migrate configuration settings that have changes between versions.
- org.openrewrite.java.testing.testcontainers.Testcontainers2ContainerClasses: Change Testcontainers container classes to their new package locations in Testcontainers 2.x.
- org.openrewrite.java.testing.testcontainers.Testcontainers2Dependencies: Change Testcontainers dependencies to adopt the new consistent
testcontainers-prefix. - org.openrewrite.java.testing.testcontainers.Testcontainers2Migration: Change dependencies and types to migrate to testcontainers-java 2.x.
- org.openrewrite.maven.MigrateToMaven4: Migrates Maven POMs from Maven 3 to Maven 4, addressing breaking changes and deprecations. This recipe updates property expressions, lifecycle phases, removes duplicate plugin declarations, and replaces removed properties to ensure compatibility with Maven 4.
- org.openrewrite.maven.RemoveDuplicatePluginDeclarations: Maven 4 rejects duplicate plugin declarations (same groupId and artifactId) with an error. This recipe removes duplicate plugin declarations, keeping only the first occurrence.
- org.openrewrite.maven.ReplaceDeprecatedLifecyclePhases: Maven 4 deprecated all
pre-*andpost-*lifecycle phases in favor of thebefore:andafter:syntax. This recipe updates plugin phase declarations to use the new syntax, includingpre-clean→before:clean,pre-site→before:site,pre-integration-test→before:integration-test, and theirpost-*equivalents. - org.openrewrite.maven.ReplaceModulesWithSubprojects: Maven 4 model version 4.1.0 deprecates the
<modules>element in favor of<subprojects>to eliminate confusion with Java's Platform Module System (JPMS). This recipe renames<modules>to<subprojects>and<module>children to<subproject>. - org.openrewrite.maven.ReplaceRemovedRootDirectoryProperties: Maven 4 removed support for deprecated root directory properties. This recipe replaces
${executionRootDirectory}with${session.rootDirectory}and${multiModuleProjectDirectory}with${project.rootDirectory}. - org.openrewrite.maven.UpgradeToModelVersion410: Upgrades Maven POMs from model version 4.0.0 to 4.1.0, enabling new Maven 4 features like
<subprojects>,bompackaging, and automatic version inference. This recipe updates the<modelVersion>element,xmlnsnamespace, andxsi:schemaLocationfrom 4.0.0 to 4.1.0. - org.openrewrite.maven.UseParentInference: Maven 4.1.0 supports automatic parent version inference when using a relative path. This recipe simplifies parent declarations by using the shorthand
<parent/>form when the parent is in the default location (..), removing the explicit<relativePath>,<groupId>,<artifactId>, and<version>elements. Maven automatically infers these values from the parent POM. - org.openrewrite.toml.ChangeKey: Change a TOML key, while leaving the value intact.
- org.openrewrite.toml.ChangeTableRowValue: Change a value in a TOML table row when the identifying property matches the specified matcher.
- org.openrewrite.toml.ChangeValue: Change the value of a TOML key.
- org.openrewrite.toml.CreateTomlFile: Create a new TOML file.
- org.openrewrite.toml.DeleteKey: Delete a TOML key-value pair.
- org.openrewrite.toml.DeleteTable: Delete a TOML table.
- org.openrewrite.toml.DeleteTableRow: Delete a TOML table row when one of its values matches the specified matcher.
- org.openrewrite.toml.FindKey: Find TOML keys matching a path expression.
- org.openrewrite.toml.MergeTableRow: Merge a TOML row into an array table. If a row with the same identifying property exists, merge the values. Otherwise, insert a new row.
- org.openrewrite.toml.ReplaceTableRow: Replace a TOML table row with new content. If a row with the same identifying property exists, replace it entirely.
Removed Recipes
- io.moderne.java.spring.framework.webxml.DeleteEmptyWebXml: Deletes
web.xmlfiles that contain only an empty<web-app>root element with no child elements. - org.openrewrite.spring.webxml.MigrateToJakartaEEServletConfiguration: Migrates
web.xmlcontent to Spring Boot Configuration classes using Jakarta EE namespace. - org.openrewrite.spring.webxml.MigrateToJavaXServletConfiguration: Migrates
web.xmlcontent to Spring Boot Configuration classes using Java EE javax namespace. - org.openrewrite.spring.webxml.RemoveWebXml: Migrates
web.xmlcontent to Spring Boot Configuration classes with respect to Java EE or Jakarta EE usage.
Changed Recipes
- org.openrewrite.maven.AddManagedDependency was changed:
- Old Options:
addToRootPom: { type: Boolean, required: false }artifactId: { type: String, required: true }classifier: { type: String, required: false }groupId: { type: String, required: true }onlyIfUsing: { type: String, required: false }releasesOnly: { type: Boolean, required: false }scope: { type: String, required: false }type: { type: String, required: false }version: { type: String, required: true }versionPattern: { type: String, required: false }
- New Options:
addToRootPom: { type: Boolean, required: false }artifactId: { type: String, required: true }because: { type: String, required: false }classifier: { type: String, required: false }groupId: { type: String, required: true }onlyIfUsing: { type: String, required: false }releasesOnly: { type: Boolean, required: false }scope: { type: String, required: false }type: { type: String, required: false }version: { type: String, required: true }versionPattern: { type: String, required: false }
- Old Options:
- org.openrewrite.maven.UpgradeTransitiveDependencyVersion was changed:
- Old Options:
addToRootPom: { type: Boolean, required: false }artifactId: { type: String, required: true }classifier: { type: String, required: false }groupId: { type: String, required: true }onlyIfUsing: { type: String, required: false }releasesOnly: { type: Boolean, required: false }scope: { type: String, required: false }type: { type: String, required: false }version: { type: String, required: true }versionPattern: { type: String, required: false }
- New Options:
addToRootPom: { type: Boolean, required: false }artifactId: { type: String, required: true }because: { type: String, required: false }classifier: { type: String, required: false }groupId: { type: String, required: true }onlyIfUsing: { type: String, required: false }releasesOnly: { type: Boolean, required: false }scope: { type: String, required: false }type: { type: String, required: false }version: { type: String, required: true }versionPattern: { type: String, required: false }
- Old Options: