micronaut-core
micronaut-core copied to clipboard
Consider extracting HTTP modules from Core
Issue description
Now it's one of the biggest parts of the Core. It would be better to have it extracted to the own repo.
Modules included:
- http
- http-client
- http-client-core
- http-netty
- http-server
- http-server-netty
- http-validation
WDYT @micronaut-projects/core-developers ?
Also the buffer-netty and websocket modules
However much of the http stuff is tested in the test-suite modules, how can we move that?
Partially move the test suite
While I think about it, something to consider when we move modules out of core. Ideally they should also get their own groupId when publishing on Maven Central. However, changing the groupId means that older modules, which were not upgraded to latest Micronaut, may bring the old modules on classpath (e.g io.micronaut:micronaut-http) and therefore introduce a conflict. We could leverage Gradle's capability declarations to handle this automatically for Gradle, but for Maven, it probably means folks would have to introduce a bunch of excludes
i dont think we have to support mixing major versions
We have already done something similar with micronaut-discovery-client. It was spun off core with its own group id (io.micronaut.discovery).
Micronaut 2.x BOM included both versions:
io.micronaut:micronaut-discovery-client:2.0.1io.micronaut.discovery:micronaut-discovery-client:2.4.0
In Micronaut 3, the io.micronaut version was removed from the BOM.
In this case, we have to extract those modules into their own io.micronaut.http group id (io.micronaut is reserved for core) and introduce this new version in the Micronaut 4 BOM.
BTW, the spin-off was first made by using git subtree to extract the code into its own repo even with Micronaut 2.x. Initially, it had the original io.micronaut group id, but started to be released independently.
Which means we can extract HTTP modules at any time.
I will move this Micronaut Framework 5. We are too late for this now.
I assume we will need to move the http-client and server/client TCK modules into this new repository as well.
Probably management also.