Use Java configuration for Gradle build

See gh-1427
This commit is contained in:
Prithvi singh
2023-06-13 09:56:57 +05:30
committed by Stephane Nicoll
parent d48f7636ed
commit a0d98918c5
38 changed files with 159 additions and 36 deletions

View File

@@ -65,6 +65,7 @@ public abstract class GradleBuildWriter {
writePlugins(writer, build);
writeProperty(writer, "group", settings.getGroup());
writeProperty(writer, "version", settings.getVersion());
writer.println();
writeJavaSourceCompatibility(writer, settings);
writer.println();
writeConfigurations(writer, build.configurations());

View File

@@ -88,7 +88,10 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
@Override
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings) {
writeProperty(writer, "sourceCompatibility", settings.getSourceCompatibility());
writer.println("java {");
writer.indented(
() -> writer.println(String.format("sourceCompatibility = '%s'", settings.getSourceCompatibility())));
writer.println("}");
}
@Override

View File

@@ -82,7 +82,10 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
@Override
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings) {
writer.println("java.sourceCompatibility = " + getJavaVersionConstant(settings.getSourceCompatibility()));
writer.println("java {");
writer.indented(() -> writer.println(
String.format("sourceCompatibility = %s", getJavaVersionConstant(settings.getSourceCompatibility()))));
writer.println("}");
}
private String getJavaVersionConstant(String jvmVersion) {

View File

@@ -16,8 +16,11 @@
package io.spring.initializr.generator.buildsystem.gradle;
import java.io.StringWriter;
import java.util.Set;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.io.SimpleIndentStrategy;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -90,4 +93,19 @@ public abstract class GradleBuildWriterTests {
protected abstract String write(GradleBuild build);
/**
* A helper method that tests if java configuration is written properly
* @param format in which source compatibility must be written
* @param jvmVersion for the java
* @return the string representation for java configuration
*/
protected String javaConfigurationWriter(String format, String jvmVersion) {
StringWriter stringWriter = new StringWriter();
IndentingWriter writer = new IndentingWriter(stringWriter, new SimpleIndentStrategy("\t"));
writer.println("java {");
writer.indented(() -> writer.println(String.format(format, jvmVersion)));
writer.println("}");
return stringWriter.toString().replace("\r\n", "\n");
}
}

View File

@@ -52,7 +52,8 @@ class GroovyDslGradleBuildWriterTests extends GradleBuildWriterTests {
void gradleBuildWithSourceCompatibility() {
GradleBuild build = new GradleBuild();
build.settings().sourceCompatibility("11");
assertThat(write(build).lines()).contains("sourceCompatibility = '11'");
String javaConfiguration = javaConfigurationWriter("sourceCompatibility = '%s'", "11");
assertThat(write(build)).contains(javaConfiguration);
}
@Test

View File

@@ -60,7 +60,8 @@ class KotlinDslGradleBuildWriterTests extends GradleBuildWriterTests {
void gradleBuildWithSourceCompatibility15(String sourceCompatibility, String javaVersionConstant) {
GradleBuild build = new GradleBuild();
build.settings().sourceCompatibility(sourceCompatibility);
assertThat(write(build)).contains("java.sourceCompatibility = " + javaVersionConstant);
String javaConfiguration = javaConfigurationWriter("sourceCompatibility = %s", javaVersionConstant);
assertThat(write(build)).contains(javaConfiguration);
}
static Stream<Arguments> sourceCompatibilityParameters() {