Index: src/main/java/org/apache/maven/profiles/activation/JdkPrefixProfileActivator.java =================================================================== --- src/main/java/org/apache/maven/profiles/activation/JdkPrefixProfileActivator.java (revision 737395) +++ src/main/java/org/apache/maven/profiles/activation/JdkPrefixProfileActivator.java (working copy) @@ -19,6 +19,9 @@ * under the License. */ +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; +import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.model.Activation; import org.apache.maven.model.Profile; import org.codehaus.plexus.util.StringUtils; @@ -43,7 +46,7 @@ } // null case is covered by canDetermineActivation(), so we can do a straight startsWith() here. - boolean result = JDK_VERSION.startsWith( jdk ); + boolean result = ( jdk.startsWith( "(" ) || jdk.startsWith( "[" )) ? matchJdkVersionRange( jdk ) : JDK_VERSION.startsWith( jdk ); if ( reverse ) { @@ -54,6 +57,25 @@ return result; } } + + private boolean matchJdkVersionRange( String jdk ) { + + boolean result = false; + + try + { + VersionRange jdkVersionRange = VersionRange.createFromVersionSpec( jdk.replaceAll( "_" , "-" ) ); + DefaultArtifactVersion jdkVersion = new DefaultArtifactVersion( JDK_VERSION.replaceAll( "_" , "-" ) ); + + result = jdkVersionRange.containsVersion( jdkVersion ); + } + catch ( InvalidVersionSpecificationException e ) + { + getLogger().warn( "Invalid JDK version range: " + jdk ); + } + + return result; + } protected boolean canDetectActivation( Profile profile ) {