support for configuring Kotlin when creating new Gradle project

#KT-7978 Fixed
This commit is contained in:
Dmitry Jemerov
2015-07-27 14:27:49 +02:00
parent e92ac6cba3
commit 5d92d3128d
4 changed files with 68 additions and 3 deletions
+3
View File
@@ -3,4 +3,7 @@
<projectConfigurator implementation="org.jetbrains.kotlin.idea.configuration.KotlinAndroidGradleModuleConfigurator"/>
<projectConfigurator implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleModuleConfigurator"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
</extensions>
</idea-plugin>
@@ -0,0 +1,62 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* 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.jetbrains.kotlin.idea.configuration
import com.intellij.framework.FrameworkTypeEx
import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider
import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModifiableModelsProvider
import com.intellij.openapi.roots.ModifiableRootModel
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtil
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
import org.jetbrains.plugins.gradle.frameworkSupport.GradleFrameworkSupportProvider
import javax.swing.Icon
public class GradleKotlinJavaFrameworkSupportProvider() : GradleFrameworkSupportProvider() {
override fun getFrameworkType(): FrameworkTypeEx = object : FrameworkTypeEx("KOTLIN") {
override fun getIcon(): Icon = KotlinIcons.FILE
override fun getPresentableName(): String = "Kotlin (Java)"
override fun createProvider(): FrameworkSupportInModuleProvider = this@GradleKotlinJavaFrameworkSupportProvider
}
override fun addSupport(module: Module,
rootModel: ModifiableRootModel,
modifiableModelsProvider: ModifiableModelsProvider,
buildScriptData: BuildScriptDataBuilder) {
var kotlinVersion = KotlinRuntimeLibraryUtil.bundledRuntimeVersion()
if (kotlinVersion == "@snapshot@") {
kotlinVersion = "0.1-SNAPSHOT"
buildScriptData.addBuildscriptRepositoriesDefinition("mavenCentral()")
val snapshotRepository = KotlinWithGradleConfigurator.SNAPSHOT_REPOSITORY.replace('\n', ' ')
buildScriptData.addBuildscriptRepositoriesDefinition(snapshotRepository)
buildScriptData.addRepositoriesDefinition("mavenCentral()")
buildScriptData.addRepositoriesDefinition(snapshotRepository)
}
buildScriptData
.addPluginDefinition(KotlinGradleModuleConfigurator.APPLY_KOTLIN)
// TODO: once IDEA-148110 is fixed, define kotlin_version property in buildscript
.addDependencyNotation(KotlinWithGradleConfigurator.LIBRARY.replace("\$kotlin_version", kotlinVersion))
.addBuildscriptDependencyNotation(KotlinWithGradleConfigurator.CLASSPATH.replace("\$kotlin_version", kotlinVersion))
}
}
@@ -27,7 +27,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlo
public class KotlinGradleModuleConfigurator extends KotlinWithGradleConfigurator {
public static final String NAME = "gradle";
private static final String APPLY_KOTLIN = "apply plugin: 'kotlin'";
public static final String APPLY_KOTLIN = "apply plugin: 'kotlin'";
@NotNull
@Override
@@ -57,8 +57,8 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi
protected static final String CLASSPATH = "classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"";
protected static final String SNAPSHOT_REPOSITORY = "maven {\nurl 'http://oss.sonatype.org/content/repositories/snapshots'\n}";
protected static final String REPOSITORY = "mavenCentral()\n";
protected static final String LIBRARY = "compile \"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version\"";
public static final String REPOSITORY = "mavenCentral()\n";
public static final String LIBRARY = "compile \"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version\"";
protected static final String SOURCE_SET = "main.java.srcDirs += 'src/main/kotlin'\n";
protected static final String VERSION = String.format("ext.kotlin_version = '%s'", VERSION_TEMPLATE);