-
Notifications
You must be signed in to change notification settings - Fork 40.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set kotlin.version when Kotlin's Gradle plugin is applied
Closes gh-11711
- Loading branch information
1 parent
bdd532c
commit 199088b
Showing
8 changed files
with
194 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
...radle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* | ||
* Copyright 2012-2018 the original author or authors. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.springframework.boot.gradle.plugin; | ||
|
||
import org.gradle.api.Plugin; | ||
import org.gradle.api.Project; | ||
import org.gradle.api.plugins.ExtraPropertiesExtension; | ||
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper; | ||
|
||
/** | ||
* {@link PluginApplicationAction} that reacts to Kotlin's Gradle plugin being applied by | ||
* configuring a {@code kotlin.version} property to align the version used for dependency | ||
* management for Kotlin with the version of its plugin. | ||
* | ||
* @author Andy Wilkinson | ||
*/ | ||
class KotlinPluginAction implements PluginApplicationAction { | ||
|
||
@Override | ||
public void execute(Project project) { | ||
String kotlinVersion = project.getPlugins().getPlugin(KotlinPluginWrapper.class) | ||
.getKotlinPluginVersion(); | ||
ExtraPropertiesExtension extraProperties = project.getExtensions() | ||
.getExtraProperties(); | ||
if (!extraProperties.has("kotlin.version")) { | ||
extraProperties.set("kotlin.version", kotlinVersion); | ||
} | ||
} | ||
|
||
@Override | ||
@SuppressWarnings("unchecked") | ||
public Class<? extends Plugin<? extends Project>> getPluginClass() { | ||
try { | ||
return (Class<? extends Plugin<? extends Project>>) Class | ||
.forName("org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper"); | ||
} | ||
catch (Throwable ex) { | ||
return null; | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
.../test/java/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* Copyright 2012-2018 the original author or authors. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package org.springframework.boot.gradle.plugin; | ||
|
||
import org.junit.Rule; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
import org.springframework.boot.gradle.junit.GradleCompatibilitySuite; | ||
import org.springframework.boot.gradle.testkit.GradleBuild; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
|
||
/** | ||
* Integration tests for {@link KotlinPluginAction}. | ||
* | ||
* @author Andy Wilkinson | ||
*/ | ||
@RunWith(GradleCompatibilitySuite.class) | ||
public class KotlinPluginActionIntegrationTests { | ||
|
||
@Rule | ||
public GradleBuild gradleBuild; | ||
|
||
@Test | ||
public void noKotlinVersionPropertyWithoutKotlinPlugin() { | ||
assertThat(this.gradleBuild.build("kotlinVersion").getOutput()) | ||
.contains("Kotlin version: none"); | ||
} | ||
|
||
@Test | ||
public void kotlinVersionMatchesKotlinPluginVersion() { | ||
String output = this.gradleBuild | ||
.build("kotlinVersion", "dependencies", "--configuration", "compile") | ||
.getOutput(); | ||
assertThat(output).contains("Kotlin version: 1.2.10"); | ||
assertThat(output).contains("org.jetbrains.kotlin:kotlin-stdlib-jdk8: -> 1.2.10"); | ||
} | ||
|
||
} |
39 changes: 39 additions & 0 deletions
39
.../plugin/KotlinPluginActionIntegrationTests-kotlinVersionMatchesKotlinPluginVersion.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
buildscript { | ||
dependencies { | ||
classpath files(pluginClasspath.split(',')) | ||
} | ||
} | ||
|
||
plugins { | ||
id 'org.jetbrains.kotlin.jvm' version '1.2.10' | ||
} | ||
|
||
|
||
apply plugin: 'org.springframework.boot' | ||
apply plugin: 'io.spring.dependency-management' | ||
|
||
dependencyManagement { | ||
resolutionStrategy { | ||
eachDependency { | ||
if (it.requested.group == 'org.springframework.boot') { | ||
it.useVersion project.bootVersion | ||
} | ||
} | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
mavenLocal() | ||
} | ||
|
||
dependencies { | ||
compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' | ||
} | ||
|
||
task kotlinVersion { | ||
doLast { | ||
def kotlinVersion = project.hasProperty('kotlin.version') ? project.getProperty('kotlin.version') : 'none' | ||
println "Kotlin version: ${kotlinVersion}" | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
...ugin/KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
buildscript { | ||
dependencies { | ||
classpath files(pluginClasspath.split(',')) | ||
} | ||
} | ||
|
||
apply plugin: 'org.springframework.boot' | ||
|
||
task kotlinVersion { | ||
doLast { | ||
def kotlinVersion = project.hasProperty('kotlin.version') ? project.getProperty('kotlin.version') : 'none' | ||
println "Kotlin version: ${kotlinVersion}" | ||
} | ||
} |