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

karaf-maven-plugin should respect version ranges when generating features repos

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.0.5
    • 4.1.0, 4.0.6
    • karaf
    • None

    Description

      When for the dependencies of a feature project version ranges are used, then the produced feature.xml
      references the highest available version of a bundle. This is not always the desired behavior. Instead of that,
      it should be configurable if the latest base version of a dependency or the version range itself should be written
      to the feature file (when a dependency is declared with a version range). I would suggest a new plugin configuration
      property "useVersionRange". Suppose a dependency to commons-lang3:

      pom.xml
      <dependencies>
      	<dependency>
      		<groupId>org.apache.commons</groupId>
      		<artifactId>commons-lang3</artifactId>
      		<version>[3.0,3.4)</version>
      	</dependency>
      </dependencies>
      
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.karaf.tooling</groupId>
                  <artifactId>karaf-maven-plugin</artifactId>
                  <version>4.1.0-SNAPSHOT</version>
                  <extensions>true</extensions>
              </plugin>
          </plugins>
      </build>
      

      If "useVersionRange" is set to "false" (default), then nothing changes, so the resulting feature.xml would look like this:

      feature.xml
      <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="test-feature-use-base-version">
          <feature name="test-feature-use-base-version" description="test-feature-use-base-version" version="1.0.0.SNAPSHOT">
              <bundle>mvn:org.apache.commons/commons-lang3/3.4</bundle>
          </feature>
      </features>
      

      If "useVersionRange" is set to "true", instead of the base version the declared version range will be used in the bundle element:

      pom.xml
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.karaf.tooling</groupId>
                  <artifactId>karaf-maven-plugin</artifactId>
                  <version>@pom.version@</version>
                  <extensions>true</extensions>
                  <configuration>
                  	<useVersionRange>true</useVersionRange>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      
      feature.xml
      <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="test-feature-use-version-range">
          <feature name="test-feature-use-version-range" description="test-feature-use-version-range" version="1.0.0.SNAPSHOT">
              <bundle>mvn:org.apache.commons/commons-lang3/[3.0,3.4)</bundle>
          </feature>
      </features>
      

      Attachments

        Issue Links

          Activity

            People

              jbonofre Jean-Baptiste Onofré
              roland.hauser@bechtle.ch Roland Hauser
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: