Index: src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java =================================================================== --- src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java (revision 764919) +++ src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java (working copy) @@ -86,19 +86,19 @@ ArtifactStub artifact = getTestArtifact(); String s; s = maven2Osgi.getBundleFileName( artifact ); - assertEquals( "org.apache.commons.logging_1.1.0.jar", s ); + assertEquals( "org.apache.commons.logging_1.1.jar", s ); artifact.setGroupId( "org.aopalliance" ); artifact.setArtifactId( "aopalliance" ); s = maven2Osgi.getBundleFileName( artifact ); - assertEquals( "org.aopalliance_1.1.0.jar", s ); + assertEquals( "org.aopalliance_1.1.jar", s ); } public void testGetVersion() { ArtifactStub artifact = getTestArtifact(); String s = maven2Osgi.getVersion( artifact ); - assertEquals( "1.1.0", s ); + assertEquals( "1.1", s ); } public void testConvertVersionToOsgi() @@ -115,10 +115,10 @@ assertEquals( "2.0.0.SNAPSHOT", osgiVersion ); osgiVersion = maven2Osgi.getVersion( "2" ); - assertEquals( "2.0.0", osgiVersion ); + assertEquals( "2", osgiVersion ); osgiVersion = maven2Osgi.getVersion( "2.1" ); - assertEquals( "2.1.0", osgiVersion ); + assertEquals( "2.1", osgiVersion ); osgiVersion = maven2Osgi.getVersion( "2.1.3" ); assertEquals( "2.1.3", osgiVersion ); Index: src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java =================================================================== --- src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java (revision 764921) +++ src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java (working copy) @@ -38,7 +38,6 @@ * Default implementation of {@link Maven2OsgiConverter} * * @plexus.component - * * @author Carlos Sanchez * @version $Id$ */ @@ -47,8 +46,9 @@ { /** Bundle-Version must match this pattern */ - private static final Pattern OSGI_VERSION_PATTERN = Pattern - .compile( "[0-9]+\\.[0-9]+\\.[0-9]+(\\.[0-9A-Za-z_-]+)?" ); + /** Refer to Section 3.2.4 of the OSGi Core Specification */ + private static final Pattern OSGI_VERSION_PATTERN = + Pattern.compile( "[0-9]+(\\.[0-9]+(\\.[0-9]+(\\.[0-9A-Za-z_-]+)?)?)?" ); /** pattern used to change - to . */ // private static final Pattern P_VERSION = Pattern.compile("([0-9]+(\\.[0-9])*)-(.*)"); @@ -353,15 +353,22 @@ { StringBuffer sb = new StringBuffer(); sb.append( major != null ? major : "0" ); - sb.append( '.' ); - sb.append( minor != null ? minor : "0" ); - sb.append( '.' ); - sb.append( service != null ? service : "0" ); if ( qualifier != null ) { sb.append( '.' ); + sb.append( minor != null ? minor : "0" ); + sb.append( '.' ); + sb.append( service != null ? service : "0" ); + sb.append( '.' ); sb.append( qualifier ); } + else + { + if ( minor != null ) + sb.append( '.' ).append( minor ); + if ( service != null ) + sb.append( '.' ).append( service ); + } return sb.toString(); } }