Uploaded image for project: 'Karaf'
  1. Karaf
  2. KARAF-165

A better 'feature-assembly' plugin

    XMLWordPrintableJSON

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.

      Attachments

        Activity

          People

            adrian.trenaman Adrian Trenaman
            adrian.trenaman Adrian Trenaman
            Votes:
            4 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: