Hi Karaf folks,

I have a question about changed behaviour of karaf-maven-plugin between
versions 3.0.5 and 4.0.5.

While using 3.0.5 my feature is correctly recognized in "assembly"  goal,
where in 4.0.5 it is not due to this error:

Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to build
assembly
    at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:234)
    at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: java.lang.IllegalStateException: Could not find matching feature
for myfeature-thirdparty/0.2.4-SNAPSHOT
    at
org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1079)
    at
org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1072)
    at
org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1072)
    at org.apache.karaf.profile.assembly.Builder.bootStage(Builder.java:811)
    at
org.apache.karaf.profile.assembly.Builder.doGenerateAssembly(Builder.java:611)
    at
org.apache.karaf.profile.assembly.Builder.generateAssembly(Builder.java:389)
    at
org.apache.karaf.tooling.AssemblyMojo.doExecute(AssemblyMojo.java:392)
    at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:228)
    ... 22 more

Problem seems to be somehow connected to how OSGi versions artifacts versus
how maven versions snapshots.
I'm assuming that this only affects SNAPSHOT versions.

Here is my feature:

    <feature name="myfeature-all" start-level="50" resolver="(obr)"
description="My all features" version="${project.version}">
        <feature version="${project.version}">myfeature-thirdparty</feature>
        <feature version="${project.version}">myfeature-core</feature>
    </feature>


I was able to workaround this problem by ugly hack below, but I guess I'm
missing something very elemenary.

Please suggest.

Here is ugly hack:


git diff -- ./src/main/java/org/apache/karaf/profile/assembly/Builder.java
diff --git
a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
index b4daa50..de47483 100644
--- a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
+++ b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
@@ -1094,7 +1094,7 @@ public class Builder {
      * @return
      */
     private boolean matches(Feature f, Dependency featureRef) {
-        String version = featureRef.getVersion();
+        String version = featureRef.getVersion().replace("-SNAPSHOT",
".SNAPSHOT");
         return f.getName().equals(featureRef.getName())
             && (version == null || version.equals("0.0.0")||
version.startsWith("[") || f.getVersion().equals(version));
     }


Thanks!

Richard.

Reply via email to