Dynamically define Java versions

This commit is contained in:
md_5 2019-02-03 10:58:51 +11:00
parent 65e6215c5b
commit c6774a7707
3 changed files with 35 additions and 28 deletions

View file

@ -22,7 +22,7 @@ public class Bootstrap
System.err.println( "*** WARNING *** You may use java -version to double check your Java version." );
}
if ( javaVersion == JavaVersion.UNKNOWN )
if ( javaVersion.isUnknown() )
{
System.err.println( "*** WARNING *** Unsupported Java detected (" + System.getProperty( "java.class.version" ) + "). BuildTools has only been tested up to Java 11. Use of development Java version is not supported." );
System.err.println( "*** WARNING *** You may use java -version to double check your Java version." );

View file

@ -305,12 +305,6 @@ public class Builder
JavaVersion minVersion = JavaVersion.getByVersion( buildInfo.getJavaVersions()[0] );
JavaVersion maxVersion = JavaVersion.getByVersion( buildInfo.getJavaVersions()[1] );
if ( minVersion == JavaVersion.UNKNOWN || maxVersion == JavaVersion.UNKNOWN )
{
System.err.println( "*** This BuildTools doesn't know how to use Java versions " + JavaVersion.printVersions( buildInfo.getJavaVersions() ) + ", please update" );
System.exit( 1 );
}
if ( curVersion.getVersion() < minVersion.getVersion() || curVersion.getVersion() > maxVersion.getVersion() )
{
System.err.println( "*** The version you have requested to build requires Java versions between " + JavaVersion.printVersions( buildInfo.getJavaVersions() ) + ", but you are using " + curVersion );

View file

@ -5,39 +5,52 @@ import java.util.Map;
import lombok.Getter;
@Getter
public enum JavaVersion
public class JavaVersion
{
UNKNOWN( -1 ),
JAVA_5( 49 ),
JAVA_6( 50 ),
JAVA_7( 51 ),
JAVA_8( 52 ),
JAVA_9( 53 ),
JAVA_10( 54 ),
JAVA_11( 55 );
private static final Map<Integer, JavaVersion> byVersion = new HashMap<Integer, JavaVersion>();
//
public static final JavaVersion JAVA_5 = new JavaVersion( "Java 5", 49 );
public static final JavaVersion JAVA_6 = new JavaVersion( "Java 6", 50 );
public static final JavaVersion JAVA_7 = new JavaVersion( "Java 7", 51 );
public static final JavaVersion JAVA_8 = new JavaVersion( "Java 8", 52 );
public static final JavaVersion JAVA_9 = new JavaVersion( "Java 9", 53 );
public static final JavaVersion JAVA_10 = new JavaVersion( "Java 10", 54 );
public static final JavaVersion JAVA_11 = new JavaVersion( "Java 11", 55 );
//
private final String name;
private final int version;
private final boolean unknown;
private JavaVersion(int version)
private JavaVersion(String name, int version)
{
this.version = version;
this( name, version, false );
}
private static final Map<Integer, JavaVersion> byVersion = new HashMap<Integer, JavaVersion>();
static
private JavaVersion(String name, int version, boolean unknown)
{
for ( JavaVersion version : values() )
{
this.name = name;
this.version = version;
this.unknown = unknown;
byVersion.put( version.version, version );
}
byVersion.put( version, this );
}
@Override
public String toString()
{
return getName();
}
public static JavaVersion getByVersion(int version)
{
return byVersion.containsKey( version ) ? byVersion.get( version ) : JavaVersion.UNKNOWN;
JavaVersion java = byVersion.get( version );
if ( java == null )
{
java = new JavaVersion( "Java " + ( version - 44 ) + "*", version, true );
}
return java;
}
public static JavaVersion getCurrentVersion()
@ -53,7 +66,7 @@ public enum JavaVersion
for ( int v : versions )
{
JavaVersion found = getByVersion( v );
sb.append( found == JavaVersion.UNKNOWN ? v : found );
sb.append( found );
sb.append( ", " );
}
sb.setLength( sb.length() - 2 );