quarkiverse / quarkus-cxf

Quarkus CXF Extension to support SOAP based web services.
Apache License 2.0
76 stars 60 forks source link

quarkus-cxf quickstart #399

Open shumonsharif opened 2 years ago

shumonsharif commented 2 years ago

Add codestart for the Quarkus-CXF extension as documented here: https://quarkus.io/guides/extension-codestart#writing-an-extension-codestart-in-the-quarkiverse-or-standalone

shumonsharif commented 2 years ago

Hi @gastaldi - are you aware of any Quarkiverse extension leveraging this at the moment?

I tried searching but not sure if I'm using the right keywords, so just wanted to check with you.

gastaldi commented 2 years ago

@shumonsharif I don't know of any quarkiverse extension bundling codestarts, maybe @ia3andy may chime in and answer this?

shumonsharif commented 2 years ago

Thanks George, will try out the codestart to see how it works - I came to the conclusion that no other Quarkiverse projects are using it yet. Will keep you both posted in case of any issues.

ia3andy commented 2 years ago

There is not Quarkiverse extension with Codestart yet but it's possible. To add a codestart the first thing is to start from an empty code.quarkus.io project and add the code you would like to see as codestart. It should be really simple and made to help developer start coding (It shouldn't contain much example just stubbing).

shumonsharif commented 2 years ago

Gotcha, thanks @ia3andy. Unfortunately, even the most minimal starter code for this extension will need a fair number of supporting example classes. We'll likely also need a plugin (like this) defined in the starter pom.xml ... I didn't see any way to integrate that into a codestart. Given these factors, I am going to skip creating a codestart for the extension and give some thought to alternative options.

Also just wanted to check with you both, we recently introduced a modular structure in the project, so we will have multiple maven modules getting published for the next release - I would like to ensure that only one (the core module) gets published to code.quarkus.io, and remaining supporting modules get skipped ... please advise on how I can ensure that; is it possible?

ia3andy commented 2 years ago

You need to make sure they are unlisted: true in the metadata. example: https://github.com/quarkusio/quarkus/blob/main/extensions/arc/runtime/src/main/resources/META-INF/quarkus-extension.yaml#L15

ia3andy commented 2 years ago

Regarding the example code,

@gastaldi @gsmet do we have a quickstart equivalent for the Quarkiverse?

else, I would suggest creating a quickstart example app in the repository and reference it from the doc. We could even consider creating a github action to generate it automatically using the codestarts system on new versions (which in this case would allow editing the pom.xml and use example code).

cc @maxandersen

maxandersen commented 2 years ago

I would say having QuickStart near/inside the extension makes sense.

Any downside to have a quickstart folder like we have docs ?

maxandersen commented 2 years ago

Ah - one downside is to not be able to have the QuickStart refer main.

@gastaldi maybe we should opt for making a quickstart repo per extension that wants it ?

ia3andy commented 2 years ago

@maxandersen we could also add it as a release item from GH actions which gets generated on release using codestarts.

maxandersen commented 2 years ago

Generated ? To where ?

ia3andy commented 2 years ago

Generated ? To where ?

@maxandersen there: https://github.com/quarkiverse/quarkus-cxf/releases

maxandersen commented 2 years ago

As a versioned zip? I guess that could work.

shumonsharif commented 2 years ago

Thanks so much all, greatly appreciate your inputs and feedback. I will explore the quickstart route for now.

@gastaldi Please let us know in case you have anything in mind for a Quarkiverse level quickstart, otherwise if it makes more sense, I will try to include it in the extension repository itself.

gastaldi commented 2 years ago

@gastaldi Please let us know in case you have anything in mind for a Quarkiverse level quickstart, otherwise if it makes more sense, I will try to include it in the extension repository itself.

I don't know what a Quarkiverse level quickstart means, but I'd recommend you to include in the extension repository itself 😉

shumonsharif commented 2 years ago

Apologies, I meant to say Quarkiverse level quickstart repo, I meant something like this: https://github.com/quarkusio/quarkus-quickstarts

Will include in the extension for now! Thanks @gastaldi.

shumonsharif commented 2 years ago

On further thought, I don't see a clean way to have a quickstart as part of the extension repo, as @maxandersen already pointed out previously. I may just end up creating a quickstart repo under my personal account, just to keep things clean. Closing this issue for now, thanks once again all.

gastaldi commented 2 years ago

I may be missing something, but isn't a quickstart/codestart another Maven module?

shumonsharif commented 2 years ago

The issue as I see it, is that the extension leverages this BOM dependency: https://github.com/quarkiverse/quarkus-cxf/blob/master/pom.xml#L76-L82

A regular Quarkus app / quickstart will have slightly different coordinates for its BOM import, so it'll have to live as an independent project, and not a Maven submodule like docs, core, or any of the others in the extension.

gastaldi commented 2 years ago

Sorry, but I am still not following. AFAIR a codestart only declares a set of instructions of what needs to be changed in a project in order to end up with a working application. I'd appreciate if we could discuss that further to understand why a maven submodule wouldn't work.

Last but not least Quickstart (a fully working application) != Codestart so I am assuming you mean the latter

shumonsharif commented 2 years ago

So, the original intent for this issue was to do a codestart. After gathering some feedback, I explained here, that a codestart won't work for this extension. A quickstart was suggested here, so that's what I've been exploring and trying to discuss in my comments today.

gastaldi commented 2 years ago

In this case I'd suggest making it available in https://github.com/quarkusio/quarkus-quickstarts, as it seems to be the central place for all quickstarts.

I personally don't like to come up with a quarkiverse-quickstarts as it would be another repository to version and maintain, but we can always discuss that.

Any thoughts @quarkiverse/quarkiverse-owners?

maxandersen commented 2 years ago

-1.

It is not a good idea to put all quarkiverse QuickStarts into the central QuickStarts. Since that repo is used for quarkus core platform release and if it can't upgrade we are stuck.

Better options is imo independent QuickStart module in quarkiverse repos or qucikstart per quarkiverse repo in the org.

A main point of quarkiverse is they should be possible to release independently thus just like docs the QuickStarts should not end up in a central repo imo.

gastaldi commented 2 years ago

Better options is imo independent QuickStart module in quarkiverse repos or qucikstart per quarkiverse repo in the org.

Not sure what you mean with Quickstart per quarkiverse repo x independent Quickstart module in the quarkiverse repository, they look the same to me, but I'm still on vacation so my brain may be somewhere else 😉

A main point of quarkiverse is they should be possible to release independently thus just like docs the QuickStarts should not end up in a central repo imo.

Right, in this case an independent quickstart module in the extension repository is a better idea IMHO

shumonsharif commented 2 years ago

@gastaldi Hope you are enjoying your vacation, and sorry for the interruptions!

I believe we're in agreement that an independent quickstart module in the extension repository itself is the best way forward, ie. the quickstart module won't be a submodule like docs or core as already explained previously.

If we do take this approach, would it be possible to update the release process to create a zip artifact containing the quickstart and publish it as a release asset? Maybe we can use a generic quickstarts folder name, just like docs, so that any Quarkiverse extension developer can leverage it? Just a thought, that I believe @ia3andy expressed as well.

ia3andy commented 2 years ago

I created an issue for this: https://github.com/quarkusio/quarkus/issues/24870

lasteris commented 1 month ago

Good day everyone! Why this issue has still opened ? I think Quarkus-CXF has comprehension documentation now. There is no problem to start from scratch of it.

maxandersen commented 1 month ago

this isn't about documentation per-say its about having a quarkus-cxf include a quickstart to get started even easier. like resteasy extension setup a hello endpoint when you use code quarkus or the cli; similar quarkus-cxf could provide the initial setup for a hello endpoint based on cxf.

maxandersen commented 1 month ago

updated title to reflect the actual ask.