This repository contains the recipes used by the Quarkus tooling to update Quarkus projects to newer versions.
The recipes are contained in the recipes/src/main/resources/quarkus-updates/core
directory and follow a pattern. Recipes are placed in [major.minor].yaml
(i.e. 3.0.yaml
).
Given:
currentVersion
the current Quarkus core version of the projecttargetVersion
the target Quarkus core version to update torecipeVersion
the version of the recipe fileThen, the recipe is applied if (only comparing major.minor):
currentVersion < recipeVersion AND targetVersion >= recipeVersion
.
The Quarkus tooling will always use the latest GitHub release of the recipe directory.
Example:
Content of the quarkus-updates
directory:
Recipes applied for a project in version 2.0.0.Final updating to 3.0.0.Alpha1 (currentVersion=2.0
, targetVersion=3.0
):
Recipes applied for a project in version 2.7.0.Final updating to 3.1.0.Final (currentVersion=2.7
, targetVersion=3.1
):
Recipes, which are applied for the specific extension only, have to fulfill several restrictions.
The tooling decides whether the yaml recipe is applied to the migrated project.
Non-core recipes are applied only if the location inside recipes/src/main/resources
matches a dependency from the migrated.
For example, if the extension depends on the artifact my.groupId:my.artifactId-anything:1.0
, only recipes from the location recipes/src/main/resources/my.groupId/my.artifactId
are applied (the artifactId matches via startsWith, therefore in this example, the folder can be named my
or my.art
, ...).
The location should be unique so no other extension would trigger the recipe as well.
When the recipes come as a dependency, be aware of the following requirements
Contributions are welcome, see CONTRIBUTING.md for more information.
./mvnw -Prelease release:prepare release:perform -DskipTests -DskipITs -Darguments="-DskipTests -DskipITs"