Hey guys, I'm evaluating karaf at the moment to be our middleware runtime for our product.
Our solution runs within internal networks with no connection to the outside world so we need built our custom karaf distribution containing all the needed bundles already packaged in the system repository. I trying to create my own distribution based on the example found on the documentation, but I can't figure out why the felix resolver cannot resolve a package: Caused by: org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=dms-content; type=karaf.feature; version=0.0.1.SNAPSHOT; filter:="(&(osgi.identity=dms-content)(type=karaf.feature)(version>=0.0.1.SNAPSHOT))" [caused by: Unable to resolve dms-content/0.0.1.SNAPSHOT: missing requirement [dms-content/0.0.1.SNAPSHOT] osgi.identity; osgi.identity=com.xxx.dms.content-rs-cxf; type=osgi.bundle; version="[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]"; resolution:=mandatory [caused by: Unable to resolve com.xxx.dms.content-rs-cxf/0.0.1.SNAPSHOT: missing requirement [com.xxx.dms.content-rs-cxf/0.0.1.SNAPSHOT] osgi.wiring.package; filter:="(&(osgi.wiring.package=org.osgi.service.blueprint)(version>=1.0.0)(!(version>=2.0.0)))"]] at org.apache.felix.resolver.ResolutionError.toException(ResolutionError.java:42) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:235) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:158) at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:216) at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263) at org.apache.karaf.profile.assembly.Builder.resolve(Builder.java:1214) at org.apache.karaf.profile.assembly.Builder.startupStage(Builder.java:1002) at org.apache.karaf.profile.assembly.Builder.doGenerateAssembly(Builder.java:606) 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 Here is the content of the pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>dms-karaf</artifactId> <groupId>com.xxx.dms</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>dms-karaf-minimal</artifactId> <packaging>karaf-assembly</packaging> <name>${project.artifactId}</name> <dependencies> <dependency> <!-- scope is compile so all features (there is only one) are installed into startup.properties and the feature repo itself is not added in etc/org.apache.karaf.features.cfg file --> <groupId>org.apache.karaf.features</groupId> <artifactId>framework</artifactId> <version>4.0.4</version> <type>kar</type> </dependency> <dependency> <!-- scope is runtime so the feature repo is listed in etc/org.apache.karaf.features.cfg file, and features will installed into the system directory --> <groupId>org.apache.karaf.features</groupId> <artifactId>standard</artifactId> <classifier>features</classifier> <version>4.0.4</version> <type>xml</type> <scope>runtime</scope> </dependency> <dependency> <!-- scope is runtime so the feature repo is listed in etc/org.apache.karaf.features.cfg file, and features will installed into the system directory if specify in the plugin configuration --> <groupId>com.xxx.dms</groupId> <artifactId>dms-content-features</artifactId> <version>${project.version}</version> <classifier>features</classifier> <type>xml</type> <scope>compile</scope> </dependency> </dependencies> <build> <!-- if you want to include resources in the distribution --> <resources> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>**/*</include> </includes> </resource> <resource> <directory>src/main/filtered-resources</directory> <filtering>true</filtering> <includes> <include>**/*</include> </includes> </resource> </resources> <plugins> <!-- if you want to include resources in the distribution --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>process-resources</id> <goals> <goal>resources</goal> </goals> </execution> </executions> </plugin> <!-- karaf-maven-plugin will call both assembly and archive goals --> <plugin> <groupId>org.apache.karaf.tooling</groupId> <artifactId>karaf-maven-plugin</artifactId> <configuration> <javase>1.8</javase> <bootFeatures> <feature>jaas</feature> <feature>shell</feature> <feature>ssh</feature> <feature>management</feature> <feature>bundle</feature> <feature>config</feature> <feature>deployer</feature> <feature>diagnostic</feature> <feature>instance</feature> <feature>kar</feature> <feature>log</feature> <feature>package</feature> <feature>service</feature> <feature>system</feature> <feature>aries-blueprint</feature> <feature>dms-content</feature> </bootFeatures> </configuration> </plugin> </plugins> </build> </project> Thanks a lot! Nicolas
