Configure Kotlin compiler to use -java-parameters by default
See gh-12641
This commit is contained in:
parent
404f22e5f9
commit
5e2726f896
|
|
@ -532,11 +532,10 @@ JSON request body. When exposed via JMX, the parameters are mapped to the parame
|
|||
the MBean's operations. Parameters are required by default. They can be made optional
|
||||
by annotating them with `@org.springframework.lang.Nullable`.
|
||||
|
||||
NOTE: To allow the input to be mapped to the operation method's parameters, code
|
||||
implementing an endpoint should be compiled with `-parameters`. This will happen
|
||||
automatically if you are using Spring Boot's Gradle plugin or if you are using Maven
|
||||
and `spring-boot-starter-parent`.
|
||||
|
||||
NOTE: To allow the input to be mapped to the operation method's parameters, java code
|
||||
implementing an endpoint should be compiled with `-parameters`, and kotlin code should
|
||||
be compiled with `-java-parameters`. This will happen automatically if you are using
|
||||
Spring Boot's Gradle plugin or if you are using Maven and `spring-boot-starter-parent`.
|
||||
|
||||
|
||||
[[production-ready-endpoints-custom-input-conversion]]
|
||||
|
|
|
|||
|
|
@ -294,6 +294,7 @@
|
|||
<jvmTarget>${java.version}</jvmTarget>
|
||||
<apiVersion>1.1</apiVersion>
|
||||
<languageVersion>1.1</languageVersion>
|
||||
<javaParameters>true</javaParameters>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
<version>${kotlin.version}</version>
|
||||
<configuration>
|
||||
<jvmTarget>${java.version}</jvmTarget>
|
||||
<javaParameters>true</javaParameters>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ plugin:
|
|||
the `bootJar` task.
|
||||
6. Configures any `JavaCompile` tasks with no configured encoding to use `UTF-8`.
|
||||
7. Configures any `JavaCompile` tasks to use the `-parameters` compiler argument.
|
||||
|
||||
8. Configures any `KotlinCompile` tasks to use the `-java-parameters` compiler argument.
|
||||
|
||||
|
||||
[[reacting-to-other-plugins-kotlin]]
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import org.gradle.api.Plugin;
|
|||
import org.gradle.api.Project;
|
||||
import org.gradle.api.plugins.ExtraPropertiesExtension;
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper;
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile;
|
||||
|
||||
/**
|
||||
* {@link PluginApplicationAction} that reacts to Kotlin's Gradle plugin being applied by
|
||||
|
|
@ -39,6 +40,13 @@ class KotlinPluginAction implements PluginApplicationAction {
|
|||
if (!extraProperties.has("kotlin.version")) {
|
||||
extraProperties.set("kotlin.version", kotlinVersion);
|
||||
}
|
||||
enableJavaParametersOption(project);
|
||||
}
|
||||
|
||||
private void enableJavaParametersOption(Project project) {
|
||||
project.getTasks().withType(KotlinCompile.class, (compile) -> {
|
||||
compile.getKotlinOptions().setJavaParameters(true);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -52,4 +52,17 @@ public class KotlinPluginActionIntegrationTests {
|
|||
.containsPattern("org.jetbrains.kotlin:kotlin-stdlib-jdk8:* -> 1.2.10");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void kotlinCompileTasksUseJavaParametersFlagByDefault() {
|
||||
assertThat(this.gradleBuild.build("kotlinCompileTasksJavaParameters").getOutput())
|
||||
.contains("compileKotlin java parameters: true")
|
||||
.contains("compileTestKotlin java parameters: true");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void kotlinCompileTasksCanOverrideDefaultJavaParametersFlag() {
|
||||
assertThat(this.gradleBuild.build("kotlinCompileTasksJavaParameters").getOutput())
|
||||
.contains("compileKotlin java parameters: false")
|
||||
.contains("compileTestKotlin java parameters: false");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
buildscript {
|
||||
dependencies {
|
||||
classpath files(pluginClasspath.split(','))
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.2.10'
|
||||
}
|
||||
|
||||
apply plugin: 'org.springframework.boot'
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.javaParameters = false
|
||||
}
|
||||
|
||||
task('kotlinCompileTasksJavaParameters') {
|
||||
doFirst {
|
||||
tasks.withType(KotlinCompile) {
|
||||
println "$name java parameters: ${kotlinOptions.javaParameters}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
buildscript {
|
||||
dependencies {
|
||||
classpath files(pluginClasspath.split(','))
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.2.10'
|
||||
}
|
||||
|
||||
apply plugin: 'org.springframework.boot'
|
||||
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
|
||||
|
||||
task('kotlinCompileTasksJavaParameters') {
|
||||
doFirst {
|
||||
tasks.withType(KotlinCompile) {
|
||||
println "$name java parameters: ${kotlinOptions.javaParameters}"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue