support for configuring Kotlin when creating new Gradle project
#KT-7978 Fixed
This commit is contained in:
@@ -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>
|
||||
|
||||
+62
@@ -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))
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user