diff --git a/src/main/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojo.java b/src/main/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojo.java index 5159f32d..602d3b04 100644 --- a/src/main/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojo.java +++ b/src/main/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojo.java @@ -44,6 +44,11 @@ */ public abstract class AbstractCompileMojo extends AbstractGroovySourcesMojo { + /** + * Groovy 5.0.0-alpha-1 version. + */ + protected static final Version GROOVY_5_0_0_ALPHA1 = new Version(5, 0, 0, "alpha-1"); + /** * Groovy 4.0.11 version. */ @@ -496,6 +501,12 @@ protected Object setupCompilerConfiguration(final File compileOutputDirectory, f * org.codehaus.groovy.classgen.asm.WriterController. */ protected void verifyGroovyVersionSupportsTargetBytecode() { + if ("1.5".equals(targetBytecode) || "5".equals(targetBytecode) || "1.6".equals(targetBytecode) || "6".equals(targetBytecode) || "1.7".equals(targetBytecode) || "7".equals(targetBytecode) || "1.8".equals(targetBytecode) || "8".equals(targetBytecode) || "1.9".equals(targetBytecode) || "9".equals(targetBytecode) || "10".equals(targetBytecode)) { + if (groovyNewerThan(GROOVY_5_0_0_ALPHA1)) { + throw new IllegalArgumentException("Target bytecode " + targetBytecode + " isn't accepted by Groovy " + GROOVY_5_0_0_ALPHA1 + " or newer."); + } + } + if ("21".equals(targetBytecode)) { if (groovyOlderThan(GROOVY_4_0_11)) { throw new IllegalArgumentException("Target bytecode " + targetBytecode + " requires Groovy " + GROOVY_4_0_11 + " or newer."); @@ -557,7 +568,7 @@ protected void verifyGroovyVersionSupportsTargetBytecode() { } } - private static String translateJavacTargetToTargetBytecode(String targetBytecode) { + protected static String translateJavacTargetToTargetBytecode(String targetBytecode) { Map javacTargetToTargetBytecode = new HashMap<>(); javacTargetToTargetBytecode.put("5", "1.5"); javacTargetToTargetBytecode.put("6", "1.6"); diff --git a/src/main/java/org/codehaus/gmavenplus/mojo/AbstractGenerateStubsMojo.java b/src/main/java/org/codehaus/gmavenplus/mojo/AbstractGenerateStubsMojo.java index 64633776..c23efa35 100644 --- a/src/main/java/org/codehaus/gmavenplus/mojo/AbstractGenerateStubsMojo.java +++ b/src/main/java/org/codehaus/gmavenplus/mojo/AbstractGenerateStubsMojo.java @@ -46,6 +46,11 @@ */ public abstract class AbstractGenerateStubsMojo extends AbstractGroovyStubSourcesMojo { + /** + * Groovy 5.0.0-alpha-1 version. + */ + protected static final Version GROOVY_5_0_0_ALPHA1 = new Version(5, 0, 0, "alpha-1"); + /** * Groovy 4.0.11 version. */ @@ -417,6 +422,12 @@ protected void resetStubModifiedDates(final Set stubs) { * org.codehaus.groovy.classgen.asm.WriterController. */ protected void verifyGroovyVersionSupportsTargetBytecode() { + if ("1.5".equals(targetBytecode) || "5".equals(targetBytecode) || "1.6".equals(targetBytecode) || "6".equals(targetBytecode) || "1.7".equals(targetBytecode) || "7".equals(targetBytecode) || "1.8".equals(targetBytecode) || "8".equals(targetBytecode) || "1.9".equals(targetBytecode) || "9".equals(targetBytecode) || "10".equals(targetBytecode)) { + if (groovyNewerThan(GROOVY_5_0_0_ALPHA1)) { + throw new IllegalArgumentException("Target bytecode " + targetBytecode + " isn't accepted by Groovy " + GROOVY_5_0_0_ALPHA1 + " or newer."); + } + } + if ("21".equals(targetBytecode)) { if (groovyOlderThan(GROOVY_4_0_11)) { throw new IllegalArgumentException("Target bytecode " + targetBytecode + " requires Groovy " + GROOVY_4_0_11 + " or newer."); diff --git a/src/test/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojoTest.java b/src/test/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojoTest.java index 53ab4e6d..ac3cd286 100644 --- a/src/test/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojoTest.java +++ b/src/test/java/org/codehaus/gmavenplus/mojo/AbstractCompileMojoTest.java @@ -420,7 +420,7 @@ public void testUnrecognizedJava() { } @Test - public void testBytecodeTranslation() throws ClassNotFoundException, InvocationTargetException, IllegalAccessException, InstantiationException { + public void testBytecodeTranslation() { Map expectedTranslations = new LinkedHashMap<>(); expectedTranslations.put("5", "1.5"); expectedTranslations.put("6", "1.6"); @@ -430,11 +430,7 @@ public void testBytecodeTranslation() throws ClassNotFoundException, InvocationT for (Map.Entry entry : expectedTranslations.entrySet()) { String javacVersion = entry.getKey(); String expectedGroovycVersion = entry.getValue(); - testMojo.targetBytecode = javacVersion; - Class compilerConfigurationClass = Class.forName("org.codehaus.groovy.control.CompilerConfiguration"); - File compileOutputDirectory = new File("."); - CompilerConfiguration compilerConfiguration = (CompilerConfiguration) testMojo.setupCompilerConfiguration(compileOutputDirectory, compilerConfigurationClass); - assertEquals(expectedGroovycVersion, compilerConfiguration.getTargetBytecode()); + assertEquals(expectedGroovycVersion, AbstractCompileMojo.translateJavacTargetToTargetBytecode(javacVersion)); } }