I've debugged a little and found out that "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManager.getPathForArtifact( Artifact artifact, boolean local )" builds a path to the destination file in the local maven repo like this (i've commented my values here):
StringBuilder path = new StringBuilder( 128 ); path.append( artifact.getGroupId().replace( '.', '/' ) ).append( '/' ); //GroupId=org\apache\karaf\examples path.append( artifact.getArtifactId() ).append( '/' ); //ArtifactId=karaf-bundle-example-client path.append( artifact.getBaseVersion() ).append( '/' ); //BaseVersion=4.3.0-SNAPSHOT path.append( artifact.getArtifactId() ).append( '-' ); //ArtifactId=karaf-bundle-example-client if ( local ) { path.append( artifact.getBaseVersion() ); //BaseVersion=4.3.0-SNAPSHOT } else { path.append( artifact.getVersion() ); } if ( artifact.getClassifier().length() > 0 ) { path.append( '-' ).append( artifact.getClassifier() ); //Classifier=SNAPSHOT } if ( artifact.getExtension().length() > 0 ) { path.append( '.' ).append( artifact.getExtension() ); //Extension=jar } and the path results to: "org\apache\karaf\examples/karaf-bundle-example-client/4.3.0-SNAPSHOT/karaf-bundle-example-client-4.3.0-SNAPSHOT-SNAPSHOT.jar". In the local maven repo after kar explosion i see the files: _remote.repositories karaf-bundle-example-client-4.3.0-SNAPSHOT-local.xml !!! karaf-bundle-example-client-4.3.0-SNAPSHOT-SNAPSHOT.jar maven-metadata-local.xml maven-metadata-sdeployer.xml maven-metadata-sdeployer.xml.sha1 resolver-status.properties So i guess the problem is with "artifact.getBaseVersion()" implementation which works correctly only if there is a timestamp in the artifact's snapshot version. Or if the artifact name in the local maven repo should contain timestamp, the implementation of the "org.apache.maven.repository.internal.LocalSnapshotMetadataGenerator.transformArtifact( Artifact artifact )" method should be changed similar to the one in "org.apache.maven.repository.internal.RemoteSnapshotMetadataGenerator" i guess. And one more thing. As you might notice, in "org.apache.karaf.cave.deployer.service.DeployerServiceImpl.browseKar(...)" method we resolve groupId by substring-ing the path to .jar file and replacing slashes with dots: path = path.replace('/', '.'); but windows paths contain backslashes and groupIds on my machine look like this: org\apache\karaf\examples -- Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html