karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré ...@nanthrax.net>
Subject Re: [PROPOSAL] Create and provide karaf-boot plugin
Date Tue, 28 Apr 2015 08:22:02 GMT
Hi Fabian,

I fully agree.

My point is more to follow the docker discussion that we have. Lot of 
people see Karaf as a complex and "large" container, and they prefer 
usage of spring-boot for instance. I want to show that Karaf is now a 
very modern, flexible, lightweight and polymorphic container. So, as I 
don't think it's a lot of effort, I would like to provide the tooling 
(code, bootstrapper, etc) to provide an alternative to spring-boot based 
on Karaf.

My €0.02 ;)

Regards
JB

On 04/28/2015 09:06 AM, Fabian Lange wrote:
> Hi JB,
>
> correct. But I don't consider that to be a real problem. I have to deal
> with about 50 osgi bundles at the moment. And because the standard assembly
> is not in the layout I want I would anyway need to have one to change the
> layout and customize the contents (properties etc).
>
> So my opinion is that while your proposal is nice to have, its not really
> worth much effort, because anybody who wants to build a dist needs actually
> much more control, rather than more helper magic.
>
> Fabian
>
> On Tue, Apr 28, 2015 at 7:28 AM, Jean-Baptiste Onofré <jb@nanthrax.net>
> wrote:
>
>> Hi Fabian,
>>
>> I fully agree with you that creating a custom distro is easy but, correct
>> me if I'm wrong, right now, you have:
>> - modules with your application code
>> - a module dedicated for your feature
>> - a module dedicated for your custom distribution assembly
>>
>> You provision the distribution created by the assembly.
>>
>> What I'm proposing is just a simple way to have a ready to go code and
>> building, in order to avoid the overhead of the "custom distribution"
>> plumbing module.
>>
>> Regards
>> JB
>>
>>
>> On 04/27/2015 09:57 PM, Fabian Lange wrote:
>>
>>> Hi,
>>>
>>> quick feedback from here. I used the current 4.0 way of building my custom
>>> dist and it was actually easy enough.
>>> What you propose seems to hide a few karaf details, which I personally
>>> think should be handled explicitly.
>>>
>>> In my case for example, I am actually happy with managing the required
>>> bootFeatures myself.
>>>
>>> Fabian
>>>
>>> On Mon, Apr 27, 2015 at 9:53 PM, Jean-Baptiste Onofré <jb@nanthrax.net>
>>> wrote:
>>>
>>>   Actually, I wasn't clear.
>>>>
>>>> At I'm proposing is not only a new plugin, it's also a dependency.
>>>>
>>>> Imagine, that in your project pom.xml, you have:
>>>>
>>>> <parent>
>>>> <groupId>org.apache.karaf.boot</groupId>
>>>> <artifactId>karaf-boot-starter-parent</artifactId>
>>>> <version>4.0.0-SNAPSHOT</version>
>>>> </parent>
>>>>
>>>> The parent contains all plugins and dependencies set, especially the
>>>> Karaf
>>>> standard distribution.
>>>>
>>>> Later in your pom.xml, you have:
>>>>
>>>> <build>
>>>> <plugins>
>>>> <plugin>
>>>>     <groupId>org.apache.karaf.boot</groupId>
>>>>     <artifactId>karaf-boot-maven-plugin</artifactId>
>>>> </plugin>
>>>> </plugins>
>>>> </build>
>>>>
>>>> In your project, you just need a class describing your Karaf
>>>> bootstrapping:
>>>>
>>>> @KarafBootApplication
>>>> @WithShell
>>>> @profiles({"a","b","c"})
>>>> @featuresBoot({"f1","f2"})
>>>> public class MyContainer implements KarafBootstrapper {
>>>>
>>>> @Override
>>>> public void run() {
>>>>     // setup your Karaf bootstrapping
>>>> }
>>>>
>>>> }
>>>>
>>>> The user can add "boot features" to customize the container:
>>>>
>>>> <dependency>
>>>> <groupId>org.apache.karaf.boot</groupId>
>>>> <artifactId>org.apache.karaf.boot.webcontainer</artifactId>
>>>> </dependency>
>>>>
>>>> for instance it will automatically add Pax Web war feature in
>>>> featuresBoot
>>>> (no need to use @featuresBoot).
>>>>
>>>> The purpose is to (depending of the goal used by the user):
>>>> 1/ be able to run container+application easily
>>>> 2/ package a custom distribution, ready to go ("key turn") including
>>>> applications
>>>>
>>>> Again, the approach is, from the native user codebase, be able to
>>>> bootstrap a container embedding the user applications. This container can
>>>> be started directly from the project, and provide an artifact ready to
>>>> deploy (on docker, or whatever). The artifact is actually a custom karaf
>>>> distribution.
>>>>
>>>> I hope it's clearer. Again, it's just an idea, but IMHO, it will give a
>>>> new dimension to Karaf: it will turn Karaf as a modern polymorphic
>>>> container.
>>>> The users can still use Karaf "standalone" where they do the
>>>> provisioning,
>>>> or they can use Karaf "boot" as basis for key turn application container.
>>>>
>>>> Regards
>>>> JB
>>>>
>>>> On 04/27/2015 07:57 PM, Guillaume Nodet wrote:
>>>>
>>>>   2015-04-27 16:03 GMT+02:00 Jean-Baptiste Onofré <jb@nanthrax.net>:
>>>>>
>>>>>    Hi all,
>>>>>
>>>>>>
>>>>>> On a local branch, I worked on some new goals for the
>>>>>> karaf-maven-plugin,
>>>>>> especially:
>>>>>>
>>>>>> karaf:run to easily bootstrap and start a Karaf instance
>>>>>>
>>>>>>
>>>>>>   +1
>>>>>
>>>>>
>>>>>    karaf:deploy to upload (scp) the project artifact (or a given
>>>>> artifact)
>>>>>
>>>>>> in
>>>>>> the deploy folder or the system folder (respecting the maven structure)
>>>>>>
>>>>>>
>>>>>>   +1 we could also add sftp and http/https upload, with the help
of the
>>>>> maven
>>>>> http servlet i've added in 4.x
>>>>>
>>>>>
>>>>>    karaf:client to connect to a running Karaf instance and execute
>>>>> commands
>>>>>
>>>>>>
>>>>>>
>>>>>>   +1, i suppose we'd need interactive and scripted, like the bin/client
>>>>> script, right ?
>>>>>
>>>>>
>>>>>   I would like to add a new plugin (more than a new goal):
>>>>>>
>>>>>> karaf-boot-maven-plugin
>>>>>>
>>>>>> with the boot goal.
>>>>>>
>>>>>> The purpose is easily:
>>>>>> 1/ in the end user code module, build a karaf custom distribution
>>>>>> including karaf standard distribution and the end user built
>>>>>> application
>>>>>> 2/ be able to easily include test with pax-exam
>>>>>> 3/ provide a ready to run artifact
>>>>>> 4/ provide a way to specify profiles or features to include in the
>>>>>> distribution
>>>>>>
>>>>>> It's just an idea for now. The purpose is to provide a ready to run
>>>>>> Karaf
>>>>>> container like users does with spring-boot.
>>>>>>
>>>>>>
>>>>>>   So it would create the distribution, same as the install-kars /
>>>>> assembly
>>>>> goal, then use the karaf:run goal ?
>>>>> The only step than the assembly / run / archive goals can't do is the
>>>>> tests, but I'm not completely sure to understand this part...
>>>>> It looks more like an archetype than a plugin to me ? Or do I miss
>>>>> something ?
>>>>>
>>>>>
>>>>>   Thoughts ?
>>>>>>
>>>>>> Regards
>>>>>> JB
>>>>>> --
>>>>>> Jean-Baptiste Onofré
>>>>>> jbonofre@apache.org
>>>>>> http://blog.nanthrax.net
>>>>>> Talend - http://www.talend.com
>>>>>>
>>>>>>
>>>>>>
>>>>>   --
>>>> Jean-Baptiste Onofré
>>>> jbonofre@apache.org
>>>> http://blog.nanthrax.net
>>>> Talend - http://www.talend.com
>>>>
>>>>
>>>
>> --
>> Jean-Baptiste Onofré
>> jbonofre@apache.org
>> http://blog.nanthrax.net
>> Talend - http://www.talend.com
>>
>

-- 
Jean-Baptiste Onofré
jbonofre@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Mime
View raw message