124 lines
3.9 KiB
Plaintext
124 lines
3.9 KiB
Plaintext
= Spring Rewrite Commons
|
|
:partials_dir: spring-rewrite-commons-docs/src/main/antora/modules/ROOT/pages/partials
|
|
:project-version: 0.1.0-SNAPSHOT
|
|
:projectVersion: {project-version}
|
|
:docs: https://docs.spring.io/spring-rewrite-commons/docs/current-SNAPSHOT/reference/html/
|
|
|
|
[quote]
|
|
____
|
|
Spring Rewrite Commons provides a set of components to parse a Java project to https://github.com/openrewrite[OpenRewrite,window=_blank] LST and apply recipes outside a build tool plugin.
|
|
____
|
|
|
|
|
|
== Get started
|
|
|
|
=== Modules
|
|
|
|
[plantuml,"models",svg]
|
|
.....
|
|
component srcMaven as "src-maven" {
|
|
component srcMavenInvoker as "src-maven-invoker" {
|
|
}
|
|
component srcMavenEmbedder as "src-maven-embedder" {
|
|
}
|
|
}
|
|
|
|
component srcGradle as "src-gradle" {
|
|
component srcGradleModel as "src-gradle-model" {
|
|
}
|
|
component srcGradleParser as "src-gradle-parser" {
|
|
}
|
|
component srcGradlePlugin as "src-gradle-plugin" {
|
|
}
|
|
}
|
|
}
|
|
.....
|
|
|
|
=== Add Dependency
|
|
|
|
**Maven**
|
|
[source,xml,indent=0,subs="verbatim,quotes,attributes",role="primary"]
|
|
----
|
|
<dependency>
|
|
<groupId>org.springframwork.rewrite</groupId>
|
|
<artifactId>spring-rewrite-commons-launcher</artifactId>
|
|
<version>{project-version}</version>
|
|
</dependency>
|
|
----
|
|
|
|
**Gradle**
|
|
[source,groovy,indent=0,subs="verbatim,quotes,attributes",role="secondary"s]
|
|
----
|
|
compile 'org.springframework.rewrite:spring-rewrite-commons-launcher:{projectVersion}'
|
|
----
|
|
|
|
|
|
=== Implement a Recipe Launcher
|
|
|
|
[source,java]
|
|
....
|
|
package com.acme.example;
|
|
|
|
import org.openrewrite.Recipe;
|
|
import org.openrewrite.SourceFile;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.rewrite.RewriteProjectParser;
|
|
import org.springframework.rewrite.parser.RewriteProjectParsingResult;
|
|
import org.springframework.rewrite.resource.ProjectResourceSet;
|
|
import org.springframework.rewrite.resource.ProjectResourceSetFactory;
|
|
import org.springframework.rewrite.resource.ProjectResourceSetSerializer;
|
|
import org.springframework.rewrite.RewriteRecipeDiscovery;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.nio.file.Path;
|
|
|
|
@Component
|
|
public class MyMigrationApplication {
|
|
|
|
@Autowired <1>
|
|
private RewriteProjectParser parser;
|
|
|
|
@Autowired
|
|
private RewriteRecipeDiscovery discovery; <2>
|
|
|
|
@Autowired
|
|
private ProjectResourceSetFactory resourceSetFactory;
|
|
|
|
@Autowired
|
|
private ProjectResourceSetSerializer serializer;
|
|
|
|
|
|
public void migrateToBoot3_1() {
|
|
Path baseDir = Path.of("."); <2>
|
|
String recipeName = "org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_1";
|
|
Recipe boot3Upgrade = discovery.getByName(recipeName); <3>
|
|
|
|
RewriteProjectParsingResult result = parser.parse(baseDir); <4>
|
|
List<SourceFile> lst = result.sourceFiles(); <5>
|
|
ProjectResourceSet resourceSet = resourceSetFactory.create(baseDir, lst); <6>
|
|
resourceSet.apply(boot3Upgrade); <7>
|
|
serializer.writeChanges(resourceSet); <8>
|
|
}
|
|
}
|
|
....
|
|
<1> All components are Spring beans and can be injected as such.
|
|
<2> The path of the project that should be migrated.
|
|
<3> `RewriteRecipeDiscovery` is used to discover an OpenRewrite recipe by name.
|
|
<4> `RewriteProjectParser` parses a given project to OpenRewrite LST.
|
|
<5> The result contains the list of ``SourceFile``s (the LST).
|
|
<6> `ProjectResourceSetFactory` can be used to create a `ProjectResourceSet`.
|
|
<7> The recipe is applied to the `ProjectResourceSet` which wraps the LST.
|
|
<8> `ProjectResourceSetSerializer` is used to serialize the changes to disk.
|
|
|
|
|
|
== Reference documentation
|
|
|
|
Find the reference documentation link:{docs}[here].
|
|
|
|
== Contributing
|
|
|
|
https://help.github.com/articles/creating-a-pull-request[Pull requests] are welcome. Note, that we expect everyone to follow the https://github.com/spring-projects/.github/blob/main/CODE_OF_CONDUCT.md[code of conduct].
|
|
|
|
== License
|
|
Spring Rewrite Commons is Open Source software released under the
|
|
https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license]. |