diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java index 95ac339482f6..41d6038630d6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java @@ -130,11 +130,21 @@ protected final void compileSourceFiles(URL[] classPath, File sourcesDirectory, } JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); try (StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null)) { + JavaCompilerPluginConfiguration compilerConfiguration = new JavaCompilerPluginConfiguration(this.project); List options = new ArrayList<>(); options.add("-cp"); options.add(ClasspathBuilder.build(Arrays.asList(classPath))); options.add("-d"); options.add(outputDirectory.toPath().toAbsolutePath().toString()); + options.add("--source"); + options.add(compilerConfiguration.getSourceMajorVersion()); + options.add("--target"); + options.add(compilerConfiguration.getTargetMajorVersion()); + String releaseVersion = compilerConfiguration.getReleaseVersion(); + if (releaseVersion != null) { + options.add("--release"); + options.add(releaseVersion); + } options.addAll(new RunArguments(this.compilerArguments).getArgs()); Iterable compilationUnits = fileManager.getJavaFileObjectsFromPaths(sourceFiles); Errors errors = new Errors(); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaCompilerPluginConfiguration.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaCompilerPluginConfiguration.java index a7a12f447b1d..242e14934195 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaCompilerPluginConfiguration.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaCompilerPluginConfiguration.java @@ -55,6 +55,16 @@ String getTargetMajorVersion() { return majorVersionFor(version); } + String getReleaseVersion() { + String version = getConfigurationValue("release"); + + if (version == null) { + version = getPropertyValue("maven.compiler.release"); + } + + return majorVersionFor(version); + } + private String getConfigurationValue(String propertyName) { Plugin plugin = this.project.getPlugin("org.apache.maven.plugins:maven-compiler-plugin"); if (plugin != null) { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JavaCompilerPluginConfigurationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JavaCompilerPluginConfigurationTests.java index 0bcd407642d3..4e3ad89b0412 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JavaCompilerPluginConfigurationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JavaCompilerPluginConfigurationTests.java @@ -59,19 +59,22 @@ void versionsAreNullWithNoConfiguration() { JavaCompilerPluginConfiguration configuration = new JavaCompilerPluginConfiguration(this.project); assertThat(configuration.getSourceMajorVersion()).isNull(); assertThat(configuration.getTargetMajorVersion()).isNull(); + assertThat(configuration.getReleaseVersion()).isNull(); } @Test void versionsAreReturnedFromConfiguration() throws IOException, XmlPullParserException { - Xpp3Dom dom = buildConfigurationDom("1.9", "11"); + Xpp3Dom dom = buildConfigurationDom("1.9", "11", "12"); given(this.plugin.getConfiguration()).willReturn(dom); Properties properties = new Properties(); properties.setProperty("maven.compiler.source", "1.8"); properties.setProperty("maven.compiler.target", "10"); + properties.setProperty("maven.compiler.release", "11"); given(this.project.getProperties()).willReturn(properties); JavaCompilerPluginConfiguration configuration = new JavaCompilerPluginConfiguration(this.project); assertThat(configuration.getSourceMajorVersion()).isEqualTo("9"); assertThat(configuration.getTargetMajorVersion()).isEqualTo("11"); + assertThat(configuration.getReleaseVersion()).isEqualTo("12"); } @Test @@ -80,10 +83,12 @@ void versionsAreReturnedFromProperties() { Properties properties = new Properties(); properties.setProperty("maven.compiler.source", "1.8"); properties.setProperty("maven.compiler.target", "11"); + properties.setProperty("maven.compiler.release", "12"); given(this.project.getProperties()).willReturn(properties); JavaCompilerPluginConfiguration configuration = new JavaCompilerPluginConfiguration(this.project); assertThat(configuration.getSourceMajorVersion()).isEqualTo("8"); assertThat(configuration.getTargetMajorVersion()).isEqualTo("11"); + assertThat(configuration.getReleaseVersion()).isEqualTo("12"); } private Xpp3Dom buildConfigurationDom(String... properties) throws IOException, XmlPullParserException {