-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Groovy language basic support #32865
Conversation
Follow-up PRs will be proposed to add ORM support and some doc |
🙈 The PR is closed and the preview is expired. |
super interesting! I think it would be better having this more like an external extension similar to scala3 support like https://github.com/quarkiverse/quarkus-scala3. We are trying to avoid grow quarkus core repo size and dependency set. |
a quick scan shows that codestarts might be the place we have a limit on language extendability but we should be able to fix or live with that in some way for this. wdyt? |
Failing Jobs - Building c32037f
Full information is available in the Build summary check run. Failures⚙️ JVM Tests - JDK 11 #- Failing: integration-tests/groovy
📦 integration-tests/groovy✖
⚙️ JVM Tests - JDK 17 #- Failing: integration-tests/groovy
📦 integration-tests/groovy✖
⚙️ JVM Tests - JDK 17 Windows #- Failing: integration-tests/groovy
📦 integration-tests/groovy✖
⚙️ JVM Tests - JDK 19 #- Failing: integration-tests/groovy
📦 integration-tests/groovy✖
|
If so, it is unclear to me why to propose Kotlin and Scala in Quarkus core knowing that they are more or less as popular as Groovy. Do you consider Groovy as less important? Please also note that there is a very limited number of JVM-based languages so it is not like any other extensions that are potentially unlimited.
Code starts are really interesting to get started with Groovy and Quarkus as it provides something already working even in native mode which could prevent end-users from making common mistakes like for example not making JUnit test case methods returning void. |
As for Scala, it was incorporated before we decided to not include everything in core (the decision was mostly driven by the size of the build but also to offer the ability to have different release cycles). This is Scala 2 though, Scala 3 is hosted in the Quarkiverse. It was my intention to move Scala 2 out of the tree but it has not been moved outside the tree because of the codestarts limitations. To be honest, I’m a bit reluctant to incorporate languages in the tree for which we have no experts in the current core maintainers. I agree we should work on alleviating the codestarts limitation as we need to be able to develop language support outside of the core tree. /cc @ia3andy |
I see bad news for Groovy developers then |
I don’t understand why it would be bad news? And we can create an issue for the codestarts support and prioritize it accordingly. That would allow us to also move the Scala one to the Quarkiverse. |
I need to give it a try but now that we have Quarkiverse codestart support, this shouldn't be a limitation anymore! |
@essobedo sorry, if any misunderstanding here. I/we are interested in enabling Groovy but we don't want to repeat the mistake of including i.e. Scala directly in core as it actually degraded very quickly - that's why when someone showed up with Scala 3 support we placed it in Quarkiverse. If we could magically do same for Kotlin I would do that too; but for now we have it in core as it works. Groovy I would love to see support for and the best way of doing that is by enabling those who are experts and interested in it to release and iterate independently from the core repository. Being in Quarkiverse is NOT a discouragement; its about enabling faster movement. |
IIRC it wasn’t possible to define additional languages. But I might have missed something or it might have been fixed already. |
just to answer this specifically - these two are in there as that was contributed in very early days of Quarkus. Now 3+ years later we've grown and learned and trying to setup core to be language agnostic rather than tie core to specific versions of the languages/libraries. At the moment we don't have contributors doing any Groovy. If we do it in core it will take much longer; hence the suggestion to move majority of this into quarkiverse extension as it lets those doing Groovy contribute and grow this much faster. |
Groovy on Quarkus is very interesting. I hope this union works. I myself opened issue #2720 back in 2019 with the expectation of seeing this integration. I ask @essobedo not to be discouraged. The considerations made so far are just minor adjustments to be made. Your contribution was very valuable. I'd rather see Groovy on Quarkus as an extension than not have it at all. |
Ok, I can move it to Quarkiverse, let me know when the repository will be ready. I will then rewrite the PR accordingly as soon as possible. And I will do my best in terms of commitments behind a Quarkiverse extension. |
sounds great @essobedo - if any challenges do reach out on quarkus-dev or zulip chat if hitting some roadblocks. |
- Follow up on quarkusio/quarkus#32865
The https://github.com/quarkiverse/quarkus-groovy repository is now created. You should have received an invitation email to join the Quarkiverse organization, @essobedo. Here are the next steps (eg. how to list your extension in code.quarkus.io, docs, etc): https://github.com/quarkiverse/quarkiverse/wiki/Checklist#after-the-repository-is-created |
fixes #2720
Motivation
The Groovy language is widely used so it would be nice to propose its support in Quarkus out-of-the-box.
Modifications:
resteasy-reactive-groovy
to the native tests in HTTP categorycodestart
to the metadata of the extensionreactive-routes
to ensure that the sources are added when creating the projectcodestart
metadata to add Groovy to all extensions for which Groovy version has been proposedResult
Even if those changes don't cover hibernate-orm and hibernate-orm-reactive, Groovy can be used to write a Quarkus application