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

A better 'feature-assembly' plugin

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 2.1.0
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      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

            • Assignee:
              adrian.trenaman Adrian Trenaman
              Reporter:
              adrian.trenaman Adrian Trenaman
            • Votes:
              5 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: