Separating RESTEasy Spring And Microprofile Components Into Independent Subprojects.
By Wei Nan Li | July 29, 2021
Currently we are doing the task of separating RESTEasy Spring and Microprofile components into independent sub-projects, and here are the sub-projects we are working on:
There are several reasons to do this:
- These Spring and Microprofile components are relatively independent from the main project, so moving them into their separate sub-projects makes them more independent and make their release cycles more flexible.
- The main RESTEasy project is under the process of migrating from JavaEE namespaces to JakartaEE namespaces, and these Microprofile and Spring components have some impacts on the work, so it is better maintaining them into their separate projects.
- Currently there are dependencies in the main project just maintained for these components. So making them as independent sub-projects can also move out these outside dependencies into their sub-projects, which release the burden of the main project maintaining work, and also increase the speed of main project build cycle.
Currently the work in progress we are doing:
resteasy-microprofilesub-projects(link listed above).
resteasy 4.7.1.Finalis released: Release 4.7.1.Final · resteasy/Resteasy · GitHub
resteasy-spring 1.0.0.Finalis released: Release v1.0.0.Final · resteasy/resteasy-spring · GitHub
There are some notes to take in above work:
- The reason to release
resteasy 4.7.1.Finalis to upload all the artifacts inside the main project. For some historical reasons we didn’t upload all the artifacts in previous versions(
arquillian-utilsfor example). But as Spring and Microprofile components are moving into their own sub-projects, these missing uploaded components are used as dependencies. Besides there maybe some other projects may need them, so from
4.7.1.Finaland moving forward we will upload all the artifacts in the RESTEasy main project.
resteasy-spring 1.0.0.Finalis released and already uploaded to maven repo: Maven Repository: org.jboss.resteasy.spring. We haven’t changed the package names or code structures inside these components, but just rename the
pom.xml, which changes from
resteasy-microprofileis not yet released. Components
resteasy-client-microprofilehave been moved into this project and renamed
rest-clientrespectively. Their package names and code structures remain the same. The groupId for the components has changed from
org.jboss.resteasy.microprofile. A BOM file is provided for this project. It’s GAV is
In addition, we are currently working on using Galleon Feature Pack solution to replace the current jboss-modules structure. The reason to do this is that the current
jboss-module solution for WildFly integration is too heavy and not flexible enough, so Galleon is a better approach for WildFly integration(more details of Galleon can see this article: Ship Your WildFly Additions via Galleon Feature Packs). There some work in progress for this task:
- GitHub - jamezp/resteasy-microprofile at feature-pack
- re-enable tests by liweinan · Pull Request #5 · resteasy/resteasy-spring · GitHub
In the future we plan to use this solution for the whole RESTEasy project.
This article does not cover all the details we are doing, for example we need to update the project docuemnts, announcing these changes, and cover more code and test changes.
Let’s move on!