Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.1.0
-
None
-
None
-
None
Description
Create an improved Maven feature-assembly plugin. Right now, to make a feature I've got to add almost a hundred lines of Maven verbage to my pom.xml in order to assemble a feature. I've got to use the attach-artifact goal of the org.codehaus.mojo/build-helper-maven-plugin to deploy my features file into Maven. I've got to use the add-features-to-repo goal from the org.apache.karaf.tooling/features-maven-plugin to suck down all the dependent bundles. I've got to a whole load of other stuff to perform the packaging to .tar.gz and .zip. The problem here is that I'm using a whole load of generic plugins to do a very specific job, and I'm having to tell the plugins what to do instead of telling them what I want done. I'd prefer to have a single more declarative plugin to do this. It might look like this:
<plugin> <groupId>org.apache.karaf.tooling</groupId> <artifactId>feature-assembly-plugin</artifactId> <version>2.2.0</version> <executions> <execution> <id>create-repo</id> <phase>generate-resources</phase> <goals> <goal>create-repo</goal> </goals> <configuration> <!-- Specify the feature file to use. --> <featureFile>file:${basedir}/target/classes/features.xml</featureFile> <!-- Specify what features to include. This is actually optional: if no features are specified, then include all features in the file by default. --> <features> <feature>feature-a</feature> </features> </configuration> </execution> </executions> </plugin>
The plugin should produce a .tar.gz and .zip file, containing the feature descriptor (and all dependent descriptors) and all bundles (and dependent bundles)in a Maven-style directory, similar to the system/ directory currently used in Karaf. Note that this plugin doesn't need you to list out all the feature repositories / descriptors that your feature file may transitively include - it will detect these dependencies at runtime and work out the details.