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.KotlinAndroidGradleModuleConfigurator"/>
|
||||||
<projectConfigurator implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleModuleConfigurator"/>
|
<projectConfigurator implementation="org.jetbrains.kotlin.idea.configuration.KotlinGradleModuleConfigurator"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
|
||||||
|
<frameworkSupport implementation="org.jetbrains.kotlin.idea.configuration.GradleKotlinJavaFrameworkSupportProvider"/>
|
||||||
|
</extensions>
|
||||||
</idea-plugin>
|
</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 class KotlinGradleModuleConfigurator extends KotlinWithGradleConfigurator {
|
||||||
public static final String NAME = "gradle";
|
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
|
@NotNull
|
||||||
@Override
|
@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 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 SNAPSHOT_REPOSITORY = "maven {\nurl 'http://oss.sonatype.org/content/repositories/snapshots'\n}";
|
||||||
protected static final String REPOSITORY = "mavenCentral()\n";
|
public static final String REPOSITORY = "mavenCentral()\n";
|
||||||
protected static final String LIBRARY = "compile \"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version\"";
|
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 SOURCE_SET = "main.java.srcDirs += 'src/main/kotlin'\n";
|
||||||
protected static final String VERSION = String.format("ext.kotlin_version = '%s'", VERSION_TEMPLATE);
|
protected static final String VERSION = String.format("ext.kotlin_version = '%s'", VERSION_TEMPLATE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user