karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fabian Lange <fabian.la...@codecentric.de>
Subject Re: [PROPOSAL] Create and provide karaf-boot plugin
Date Mon, 27 Apr 2015 19:57:41 GMT
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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message