diff --git "a/C:\\Users\\chakuht0\\AppData\\Local\\Temp\\TortoiseGit\\InsCFF3.tmp\\InstallKarsMojo-b793c7b-left.java" "b/D:\\github\\karaf-clone\\tooling\\karaf-maven-plugin\\src\\main\\java\\org\\apache\\karaf\\tooling\\features\\InstallKarsMojo.java" index ef06c6d..52bb0cb 100644 --- "a/C:\\Users\\chakuht0\\AppData\\Local\\Temp\\TortoiseGit\\InsCFF3.tmp\\InstallKarsMojo-b793c7b-left.java" +++ "b/D:\\github\\karaf-clone\\tooling\\karaf-maven-plugin\\src\\main\\java\\org\\apache\\karaf\\tooling\\features\\InstallKarsMojo.java" @@ -38,7 +38,11 @@ import java.util.Set; import javax.xml.bind.JAXBException; import javax.xml.stream.XMLStreamException; +import org.apache.felix.utils.manifest.Attribute; +import org.apache.felix.utils.manifest.Clause; +import org.apache.felix.utils.manifest.Directive; import org.apache.felix.utils.properties.Properties; +import org.apache.felix.utils.version.VersionRange; import org.apache.karaf.features.BundleInfo; import org.apache.karaf.features.Dependency; import org.apache.karaf.features.FeaturesService; @@ -54,6 +58,7 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.osgi.framework.Constants; /** * Installs kar dependencies into a server-under-construction in target/assembly @@ -473,9 +478,18 @@ public class InstallKarsMojo extends MojoSupport { if (!feature.getName().equals(dependency.getName())) { return false; } + if (feature.getVersion() != null) { + VersionRange vr = new VersionRange(feature.getVersion(), true); + boolean matches = ManifestUtils.matches(clause(feature.getName(), vr.toString()), clause(dependency.getName(), dependency.getVersion())); + return matches; + } return true; } - } + private Clause clause(String name, String version) { + Attribute[] attribute = {new Attribute(Constants.VERSION_ATTRIBUTE, version)}; + return new Clause(name, new Directive[0], attribute); + } + } }