https://github.com/quarkusio/quarkus-updates
OpenRewrite recipes to update Quarkus projects
https://github.com/quarkusio/quarkus-updates
Last synced: 4 months ago
JSON representation
OpenRewrite recipes to update Quarkus projects
- Host: GitHub
- URL: https://github.com/quarkusio/quarkus-updates
- Owner: quarkusio
- License: apache-2.0
- Created: 2022-12-20T14:44:10.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-24T11:48:57.000Z (8 months ago)
- Last Synced: 2024-10-29T15:44:28.581Z (8 months ago)
- Language: Java
- Homepage:
- Size: 599 KB
- Stars: 10
- Watchers: 5
- Forks: 18
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Quarkus Update Recipes
[](https://central.sonatype.com/artifact/io.quarkus/quarkus-update-recipes)
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 project
- `targetVersion` the target Quarkus core version to update to
- `recipeVersion` 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:
- 2.7.yaml
- 2.9.yaml
- 3alpha.yaml
- 3.1.yaml
- 3.5.yamlRecipes 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.yamlRecipes 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### How to provide extension recipes
Recipes, which are applied for the specific extension only, have to fulfill several restrictions.
#### Extension recipes from src
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.#### Extension recipes from external dependency
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).## Contributing
Contributions are welcome, see [CONTRIBUTING.md](./CONTRIBUTING.md) for more information.
## Release
```
./mvnw -Prelease release:prepare release:perform -DskipTests -DskipITs -Darguments="-DskipTests -DskipITs"
```