Wizard: fix android project template
It was not able to be built as lint task required com.android.tools.build:gradle in classpath to work #KT-38579 fixed
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
id 'kotlin-android-extensions'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
kotlin("android") version "KOTLIN_VERSION"
|
||||
kotlin("android")
|
||||
id("kotlin-android-extensions")
|
||||
}
|
||||
group = "testGroupId"
|
||||
|
||||
+14
@@ -1,3 +1,17 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
maven {
|
||||
url 'https://dl.bintray.com/kotlin/kotlin-dev'
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION')
|
||||
classpath('com.android.tools.build:gradle:3.5.2')
|
||||
}
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
|
||||
+14
@@ -1,3 +1,17 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
maven {
|
||||
url = uri("https://dl.bintray.com/kotlin/kotlin-dev")
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION")
|
||||
classpath("com.android.tools.build:gradle:3.5.2")
|
||||
}
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'org.jetbrains.kotlin.android' version 'KOTLIN_VERSION'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
id 'kotlin-android-extensions'
|
||||
}
|
||||
group = 'me.user'
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
kotlin("android") version "KOTLIN_VERSION"
|
||||
kotlin("android")
|
||||
id("kotlin-android-extensions")
|
||||
}
|
||||
group = "me.user"
|
||||
|
||||
+14
-1
@@ -1,4 +1,17 @@
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
maven {
|
||||
url 'https://dl.bintray.com/kotlin/kotlin-dev'
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION')
|
||||
classpath('com.android.tools.build:gradle:3.5.2')
|
||||
}
|
||||
}
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
|
||||
+14
@@ -1,3 +1,17 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
maven {
|
||||
url = uri("https://dl.bintray.com/kotlin/kotlin-dev")
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN_VERSION")
|
||||
classpath("com.android.tools.build:gradle:3.5.2")
|
||||
}
|
||||
}
|
||||
group = "me.user"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN_VERSION'
|
||||
id 'org.jetbrains.kotlin.multiplatform'
|
||||
id 'com.android.library'
|
||||
id 'kotlin-android-extensions'
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform") version "KOTLIN_VERSION"
|
||||
kotlin("multiplatform")
|
||||
id("com.android.library")
|
||||
id("kotlin-android-extensions")
|
||||
}
|
||||
|
||||
+4
@@ -8,6 +8,10 @@ interface BuildSystemIR : IR {
|
||||
fun BuildFilePrinter.render()
|
||||
}
|
||||
|
||||
interface BuildSystemIRWithPriority : BuildSystemIR {
|
||||
val priority: Int? get() = null
|
||||
}
|
||||
|
||||
// IR element, which is not hardcoded into the parent IR structure and can be printed
|
||||
// In any place of the parent IR
|
||||
interface FreeIR : BuildSystemIR
|
||||
|
||||
+4
-3
@@ -8,7 +8,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
|
||||
interface BuildSystemPluginIR : BuildSystemIR
|
||||
interface BuildSystemPluginIR : BuildSystemIR, BuildSystemIRWithPriority
|
||||
|
||||
interface DefaultBuildSystemPluginIR : BuildSystemPluginIR
|
||||
|
||||
@@ -31,7 +31,7 @@ data class ApplicationPluginIR(val mainClass: String) : DefaultBuildSystemPlugin
|
||||
}
|
||||
}
|
||||
|
||||
data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemPluginIR, GradleIR {
|
||||
data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String, override val priority: Int? = null) : BuildSystemPluginIR, GradleIR {
|
||||
override fun GradlePrinter.renderGradle() {
|
||||
call("id") { +pluginId.quotified }
|
||||
}
|
||||
@@ -39,7 +39,8 @@ data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemP
|
||||
|
||||
data class KotlinBuildSystemPluginIR(
|
||||
val type: Type,
|
||||
val version: Version?
|
||||
val version: Version?,
|
||||
override val priority: Int? = null
|
||||
) : BuildSystemPluginIR {
|
||||
|
||||
override fun BuildFilePrinter.render() = when (this) {
|
||||
|
||||
+6
-1
@@ -3,6 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
||||
import kotlinx.collections.immutable.PersistentList
|
||||
import kotlinx.collections.immutable.plus
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
import kotlin.reflect.full.isSubclassOf
|
||||
|
||||
|
||||
interface IrsOwner {
|
||||
@@ -18,7 +19,11 @@ fun <I : IrsOwner> I.withIrs(vararg irs: BuildSystemIR) = withReplacedIrs(irs =
|
||||
|
||||
|
||||
inline fun <reified I : BuildSystemIR> IrsOwner.irsOfType(): List<I> =
|
||||
irs.filterIsInstance<I>()
|
||||
irs.filterIsInstance<I>().let { irs ->
|
||||
if (I::class.isSubclassOf(BuildSystemIRWithPriority::class))
|
||||
irs.sortedBy { (it as BuildSystemIRWithPriority).priority }
|
||||
else irs
|
||||
}
|
||||
|
||||
|
||||
inline fun <reified I : BuildSystemIR> IrsOwner.irsOfTypeOrNull() =
|
||||
|
||||
+1
-1
@@ -153,5 +153,5 @@ data class GradleBinaryExpressionIR(val left: BuildSystemIR, val op: String, val
|
||||
|
||||
interface BuildScriptIR : BuildSystemIR
|
||||
|
||||
data class BuildScriptDependencyIR(val dependencyIR: GradleIR) : BuildScriptIR, BuildSystemIR by dependencyIR
|
||||
data class BuildScriptDependencyIR(val dependencyIR: BuildSystemIR) : BuildScriptIR, BuildSystemIR by dependencyIR
|
||||
data class BuildScriptRepositoryIR(val repositoryIR: RepositoryIR) : BuildScriptIR, BuildSystemIR by repositoryIR
|
||||
+2
-2
@@ -52,9 +52,9 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName)
|
||||
+GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName, priority = 1)
|
||||
|
||||
+GradleOnlyPluginByNameIR("kotlin-android-extensions")
|
||||
+GradleOnlyPluginByNameIR("kotlin-android-extensions", priority = 3)
|
||||
+AndroidConfigIR(
|
||||
when (reader.createAndroidPlugin(module)) {
|
||||
AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr)
|
||||
|
||||
+28
-17
@@ -5,13 +5,18 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptDependencyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.BuildScriptRepositoryIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate
|
||||
@@ -34,26 +39,32 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
override val resourcesDirectoryName: String = "res"
|
||||
override val kotlinDirectoryName: String = "java"
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+super<AndroidModuleConfigurator>.createBuildFileIRs(reader, configurationData, module)
|
||||
|
||||
// it is explicitly here instead of by `createKotlinPluginIR` as it should be after `com.android.application`
|
||||
+KotlinBuildSystemPluginIR(
|
||||
KotlinBuildSystemPluginIR.Type.android,
|
||||
version = configurationData.kotlinVersion
|
||||
)
|
||||
}.sortedBy { ir: BuildSystemIR ->
|
||||
if (ir is GradleOnlyPluginByNameIR) {
|
||||
// TODO implement proper sort on irs
|
||||
// But for now kotlin-android-extensions should be after Android kotlin plugin
|
||||
if (ir.pluginId == "kotlin-android-extensions") 1 else 0
|
||||
} else 0
|
||||
override fun createRootBuildFileIrs(configurationData: ModulesToIrConversionData): List<BuildSystemIR> = irsList {
|
||||
listOf(
|
||||
DefaultRepository.GRADLE_PLUGIN_PORTAL,
|
||||
DefaultRepository.JCENTER,
|
||||
DefaultRepository.GOOGLE,
|
||||
configurationData.kotlinVersion.kotlinVersionKind.repository
|
||||
).forEach { repository ->
|
||||
+BuildScriptRepositoryIR(RepositoryIR((repository)))
|
||||
}
|
||||
|
||||
irsList {
|
||||
"classpath"(const("org.jetbrains.kotlin:kotlin-gradle-plugin:${configurationData.kotlinVersion}"))
|
||||
"classpath"(const("com.android.tools.build:gradle:${Versions.GRADLE_PLUGINS.ANDROID}"))
|
||||
}.forEach {
|
||||
+BuildScriptDependencyIR(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
KotlinBuildSystemPluginIR(
|
||||
KotlinBuildSystemPluginIR.Type.android,
|
||||
version = configurationData.kotlinVersion,
|
||||
priority = 2
|
||||
)
|
||||
|
||||
override fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
|
||||
+3
@@ -6,6 +6,7 @@ import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
||||
@@ -222,6 +223,8 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
||||
): List<BuildSystemIR> =
|
||||
emptyList()
|
||||
|
||||
fun createBuildFileIRsComparator(): Comparator<BuildSystemIR>? = null
|
||||
|
||||
fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
|
||||
+10
-7
@@ -69,8 +69,12 @@ class ModulesToIRsConverter(
|
||||
fun Writer.createBuildFiles(): TaskResult<List<BuildFileIR>> = with(data) {
|
||||
val needExplicitRootBuildFile = !needFlattening
|
||||
val initialState = ModulesToIrsState(projectPath, parentModuleHasTransitivelySpecifiedKotlinVersion = false)
|
||||
|
||||
val parentModuleHasKotlinVersion = allModules.any { module ->
|
||||
module.configurator == AndroidSinglePlatformModuleConfigurator
|
||||
}
|
||||
|
||||
rootModules.mapSequence { module ->
|
||||
val parentModuleHasKotlinVersion = module.configurator == AndroidSinglePlatformModuleConfigurator
|
||||
createBuildFileForModule(
|
||||
module,
|
||||
initialState.copy(parentModuleHasTransitivelySpecifiedKotlinVersion = parentModuleHasKotlinVersion)
|
||||
@@ -174,11 +178,11 @@ class ModulesToIRsConverter(
|
||||
}
|
||||
|
||||
module.subModules.mapSequence { subModule ->
|
||||
createBuildFileForModule(
|
||||
subModule,
|
||||
state.stateForSubModule(modulePath)
|
||||
)
|
||||
}.map { it.flatten() }
|
||||
createBuildFileForModule(
|
||||
subModule,
|
||||
state.stateForSubModule(modulePath)
|
||||
)
|
||||
}.map { it.flatten() }
|
||||
.map { children ->
|
||||
buildFileIR?.let { children + it } ?: children
|
||||
}
|
||||
@@ -280,7 +284,6 @@ class ModulesToIRsConverter(
|
||||
// do not print version for non-root modules for gradle
|
||||
val needRemoveVersion = data.buildSystemType.isGradle
|
||||
&& state.parentModuleHasTransitivelySpecifiedKotlinVersion
|
||||
&& module.configurator != AndroidSinglePlatformModuleConfigurator
|
||||
when {
|
||||
needRemoveVersion -> plugin.copy(version = null)
|
||||
else -> plugin
|
||||
|
||||
Reference in New Issue
Block a user