Hi guys, Recently, we received a lot of questions around how to create Karaf custom distribution based on karaf-maven-plugin, and how to use the static profile to create "standalone/static" distribution.
If the plugin works fine, it's not easy to understand some "details", like the dependency scope impact, or providing the set of default features repos and features. I already helped users (in private communication) to fix their custom distributions. Obviously, we should simplify the way of creating custom distribution, especially with the new tooling & feature we now provide around Docker. I would like to propose the following: 1. Set the default behavior of the assembly goal to create a custom distribution based on standard. For the user, instead of providing (again) all framework, standard, enterprise features repos and all standard boot features (shell, ...), it will just specify the tar.gz/zip base and his own features repo/repos (or the goal will use the same version of the goal plugin itself). All the rest will be done by the plugin for him. Use the karaf packaging as default to define this. At the end of the day, the user pom.xml will look like: <project> <groupId>foo</groupId> <artifactId>bar</artifactId> <version>1.0-SNAPSHOT</version> <packaging>karaf</packaging> <dependencies> <dependency> <groupId>org.apache.karaf</groupId> <artifactId>apache-karaf</artifactId> <version>4.2.1</version> <type>tar.gz</type> </dependency> <dependency> <groupId>foo</groupId> <artifactId>my</artifactId> <version>1.0-SNAPSHOT</version> <classifier>features</classifier> <type>xml</type> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.karaf.tooling</groupId> <artifactId>karaf-maven-plugin</artifactId> <extensions>true</extensions> <inherited>true</inherited> <configuration> <bootFeatures> <feature>my</feature> </bootFeatures> <installedFeatures> <feature>my-other</feature> </installedFeatures> </configuration> </plugin> </plugins> </build> </project> The idea is to automatically execute install-kar + assembly for the karaf packaging and let the user focus on its own resources (features, config, ...) just providing the base Karaf archive. The user will be able to use src/main/resources to provide any files in etc, bin, or whatever in the resulting custom distribution. 2. Improve a bit the features XML generation If the custom distribution is the highest priority, just after the improvements on this area, I would like to improve the way of creating features XML. Now, to be honest, almost all of us write features repos XML by hand. It gives us the maximum of flexibility. However, on the other hand, the features XML and code contain should be sync. I would like to improve the generate features MOJO, however leveraging most of all functionalities around features (prerequisites, dependency flag, inner features, ...). I have to dig a little bit around that, but if you want some ideas already, please let me know. Thoughts ? Regards JB -- Jean-Baptiste Onofré jbono...@apache.org http://blog.nanthrax.net Talend - http://www.talend.com