-
Feature Request
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
None
-
False
-
None
-
False
-
Proposed title of this feature request
Package OpenRewrite recipes in a jar for discovery
What is the nature and description of the request?
Currently invoking OpenRewrite recipes looks like this:
bin/windup-cli --openrewrite --input `pwd`/../ticket2rock -Drewrite.configLocation=`pwd`/rules/openrewrite/jakarta/javax/imports/rewrite.yml -DactiveRecipes=org.jboss.windup.JavaxToJakarta --goal run
The user needs to know the name of the recipe and the location of the recipe. The windup-cli invoke mvn like this:
mvn org.openrewrite.maven:rewrite-maven-plugin:4.25.0:run -Drewrite.configLocation=/Users/esiegl/Documents/Develop/windup-cli-6.2.1.Final/rules/openrewrite/jakarta/javax/imports/rewrite.yml -DactiveRecipes=org.jboss.windup.JavaxToJakarta
This feature request proposes to package the recipes in a way such that OpenRewrite discovers the recipe similar to the Quarkus project in https://github.com/quarkusio/quarkus-updates/ . The recipes then could be called like this:
mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.jboss.windup.rules:windup-rulesets:6.4.0-SNAPSHOT -Drewrite.activeRecipes=org.jboss.windup.JavaxToJakarta
without specifying a location for rewrite.yml, even without downloading a Windup distibution
It also makes discovery of the recipes simple with
mvn org.openrewrite.maven:rewrite-maven-plugin:discover -Drewrite.recipeArtifactCoordinates=org.jboss.windup.rules:windup-rulesets:6.4.0-SNAPSHOT
...
{}[*INFO*] -{} rewrite:5.20.0:discover (default-cli) @ standalone-pom -[*INFO*] Available Recipes:[*INFO*] org.jboss.windup.eap8.FacesWebXml[*INFO*] org.jboss.windup.jakarta.javax.BootstrappingFiles[*INFO*] org.jboss.windup.jakarta.javax.PersistenceXml[*INFO*] org.jboss.windup.JavaxActivationToJakartaActivation[*INFO*] org.jboss.windup.JavaxAnnotationToJakartaAnnotation[*INFO*] org.jboss.windup.JavaxBatchToJakartaBatch[*INFO*] org.jboss.windup.JavaxDecoratorToJakartaDecorator[*INFO*] org.jboss.windup.JavaxEjbToJakartaEjb[*INFO*] org.jboss.windup.JavaxElToJakartaEl[*INFO*] org.jboss.windup.JavaxEnterpriseToJakartaEnterprise
...
Why does the customer need this? (List the business requirements here)
For larger projects specifying a single recipe is not enough for a migration. You may need to combine standard recipes with project specific custom recipes. For these customizations a rewrite.yml in the project directory is used and it would be convenient to configure OpenRewrite in the pom.xml like this:
{{ <plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>5.17.1</version>
<dependencies>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-migrate-java</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-testing-frameworks</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.jboss.windup.rules</groupId>
<artifactId>windup-rulesets</artifactId>
<version>6.4.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
}}
Currently this seems to be not possible since the location for rewrite.yml is occupied by Windup and the recipes are not packaged to be discovered by the OpenRewrite plugin.
Optional: List affected component/s.
- is related to
-
WINDUP-3581 MTA/MTR CLI - discover OpenRewrite recipes
- New