Files
spring-rewrite-commons/README.adoc
Fabian Krüger 8fc77a20bc Fix Windows build
* Fix paths for all OS

* Tweak build file

* Provide correct class to logger

* Download dependencies before comparing parse reults

When local Maven repo is empty the Markers added by the RewriteMavenProjectParser (comparing) and the RewriteProjectParser (under test) differ.
This is because one downloads the dependencies and the next takes them form local Maven and the URIs for dependencies then differ.
By builing the projects with Maven first the dependencies will be available in local Maven repo and taken from there by both parsers.

* Add logging

* fix formatting

* Ignore test when using Windows
2023-12-21 10:13:31 +01:00

103 lines
3.5 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
=== 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.parsers.RewriteProjectParser;
import org.springframework.rewrite.parsers.RewriteProjectParsingResult;
import org.springframework.rewrite.project.resource.ProjectResourceSet;
import org.springframework.rewrite.project.resource.ProjectResourceSetFactory;
import org.springframework.rewrite.project.resource.ProjectResourceSetSerializer;
import org.springframework.rewrite.recipes.RewriteRecipeDiscovery;
import org.springframework.stereotype.Component;
import java.nio.file.Path;
import java.util.List;
@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].