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 file
Then, 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:
- 2.7.yaml
- 2.9.yaml
- 3alpha.yaml
- 3.1.yaml
- 3.5.yaml
Recipes applied for a project in version 2.0.0.Final updating to 3.0.0.Alpha1 (currentVersion=2.0
, targetVersion=3.0
):
- 2.7.yaml
- 2.9.yaml
- 3alpha.yaml
Recipes applied for a project in version 2.7.0.Final updating to 3.1.0.Final (currentVersion=2.7
, targetVersion=3.1
):
- 2.9.yaml
- 3alpha.yaml
- 3.1.yaml
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
- Yaml recipe has to be created in the same way (the correct location) described in the previous chapter.
- Test coverage has to be added to this project (even if the recipes are tested in their own project).
Contributions are welcome, see CONTRIBUTING.md for more information.
./mvnw -Prelease release:prepare release:perform -DskipTests -DskipITs -Darguments="-DskipTests -DskipITs"