mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
KTIJ-21577 [project-wizard] remove Compose Multiplatform Old from Kotlin wizard
Merge-request: IJ-MR-97564 Merged-by: Dima Avdeev GitOrigin-RevId: 9a1cc0b1fcc5d731a7992959ccd6090aa3be715a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a5489afc93
commit
772791c821
-5
@@ -48,17 +48,12 @@ class WizardStatsService : CounterUsagesCollector() {
|
||||
"fullStackWebApplication",
|
||||
"nodejsApplication",
|
||||
"reactApplication",
|
||||
"composeDesktopApplication",
|
||||
"composeMultiplatformApplication",
|
||||
"none",
|
||||
// AppCode KMM
|
||||
"multiplatformMobileApplicationUsingAppleGradlePlugin",
|
||||
"multiplatformMobileApplicationUsingHybridProject",
|
||||
)
|
||||
private val allowedModuleTemplates = listOf(
|
||||
"composeAndroid",
|
||||
"composeDesktopTemplate",
|
||||
"composeMppModule",
|
||||
"consoleJvmApp",
|
||||
"ktorServer",
|
||||
"mobileMppModule",
|
||||
|
||||
-22
@@ -39,8 +39,6 @@ project.kind.android=Android
|
||||
project.kind.kotlin.js=Kotlin/JS
|
||||
project.kind.multiplatform=Multiplatform
|
||||
project.kind.singleplatform=JVM
|
||||
project.kind.compose= Compose Multiplatform (Old version)
|
||||
project.kind.compose.short.name=Compose Multiplatform (Old version)
|
||||
|
||||
project=Project
|
||||
|
||||
@@ -77,7 +75,6 @@ module.type.native=Kotlin/Native
|
||||
module.name=Module name
|
||||
|
||||
module.configurator.simple.js.browser=JS for Browser
|
||||
module.configurator.simple.js.compose.browser=Compose JS for Browser
|
||||
module.configurator.simple.js.node=JS for Node.JS
|
||||
|
||||
module.configurator.android=Android
|
||||
@@ -149,31 +146,12 @@ project.template.nodejs.description=Application for the Node.js runtime with Kot
|
||||
project.template.mpp.mobile.title=Mobile Application
|
||||
project.template.mpp.mobile.description=Mobile applications for iOS and Android with common code shared between platforms
|
||||
|
||||
project.template.compose.desktop.title=Compose Desktop Application
|
||||
project.template.compose.desktop.description=A Compose application targeting the desktop JVM platform (Windows, Linux, macOS)
|
||||
|
||||
project.template.compose.multiplatform.title=Compose Multiplatform Application
|
||||
project.template.compose.multiplatform.description=Multiplatform (JVM/Windows, JVM/Linux, JVM/MacOS, Android) Compose project with shared code in common modules
|
||||
|
||||
project.template.compose.web.title=Compose Web Application
|
||||
project.template.compose.web.description=Web (JS) Compose project
|
||||
|
||||
module.template.console.jvm.title=Console Application
|
||||
module.template.console.jvm.description=Simple "Hello World!" Kotlin/JVM application that works in the console
|
||||
|
||||
module.template.mpp.mobile.title=Mobile Application
|
||||
module.template.mpp.mobile.description=Mobile applications for iOS and Android with Kotlin Multiplatform Mobile, which supports sharing common code between platforms.
|
||||
|
||||
|
||||
module.template.compose.desktop.title=Compose Desktop Module
|
||||
module.template.compose.desktop.description=A Compose application targeting the desktop JVM platform
|
||||
|
||||
module.template.compose.web.title=Compose Web Module
|
||||
module.template.compose.web.description=A Compose Web application targeting browser (JS)
|
||||
|
||||
module.template.compose.mpp.title=Compose MPP Module
|
||||
module.template.compose.mpp.description=Compose MPP Module
|
||||
|
||||
module.template.ktor.server.title=Web server
|
||||
module.template.ktor.server.description=Backend web server
|
||||
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="${package}">
|
||||
<application
|
||||
android:allowBackup="false"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
|
||||
<activity android:name=".MainActivity" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
#if ($package)
|
||||
package ${package}
|
||||
#end
|
||||
#if ($sharedPackage)
|
||||
import ${sharedPackage}.App
|
||||
#end
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.material.MaterialTheme
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
#if ($sharedPackage)
|
||||
setContent {
|
||||
MaterialTheme {
|
||||
App()
|
||||
}
|
||||
}
|
||||
#end
|
||||
}
|
||||
}
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.window.Window
|
||||
import androidx.compose.ui.window.application
|
||||
|
||||
@Composable
|
||||
@Preview
|
||||
fun App() {
|
||||
var text by remember { mutableStateOf("Hello, World!") }
|
||||
|
||||
MaterialTheme {
|
||||
Button(onClick = {
|
||||
text = "Hello, Desktop!"
|
||||
}) {
|
||||
Text(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main() = application {
|
||||
Window(onCloseRequest = ::exitApplication) {
|
||||
App()
|
||||
}
|
||||
}
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
#if ($package)
|
||||
package ${package}
|
||||
|
||||
#end
|
||||
#set( $dollar = "${" )
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
|
||||
@Composable
|
||||
fun App() {
|
||||
var text by remember { mutableStateOf("Hello, World!") }
|
||||
|
||||
Button(onClick = {
|
||||
text = "Hello, ${dollar}getPlatformName()}"
|
||||
}) {
|
||||
Text(text)
|
||||
}
|
||||
}
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
#if ($package)
|
||||
package ${package}
|
||||
|
||||
#end
|
||||
#set( $dollar = "${" )
|
||||
import androidx.compose.desktop.ui.tooling.preview.Preview
|
||||
import androidx.compose.runtime.Composable
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun AppPreview() {
|
||||
App()
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#if ($sharedPackage)
|
||||
import ${sharedPackage}.App
|
||||
#end
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.ui.window.Window
|
||||
import androidx.compose.ui.window.application
|
||||
|
||||
fun main() = application {
|
||||
Window(onCloseRequest = ::exitApplication) {
|
||||
MaterialTheme {
|
||||
App()
|
||||
}
|
||||
}
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Sample</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script src="${projectName}.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.setValue
|
||||
import org.jetbrains.compose.web.css.*
|
||||
import org.jetbrains.compose.web.dom.*
|
||||
import org.jetbrains.compose.web.renderComposable
|
||||
|
||||
fun main() {
|
||||
var count: Int by mutableStateOf(0)
|
||||
|
||||
renderComposable(rootElementId = "root") {
|
||||
Div({ style { padding(25.px) } }) {
|
||||
Button(attrs = {
|
||||
onClick { count -= 1 }
|
||||
}) {
|
||||
Text("-")
|
||||
}
|
||||
|
||||
Span({ style { padding(15.px) } }) {
|
||||
Text("$count")
|
||||
}
|
||||
|
||||
Button(attrs = {
|
||||
onClick { count += 1 }
|
||||
}) {
|
||||
Text("+")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
#set( $dollar = "${" )
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material.Button
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.runtime.*
|
||||
|
||||
@Composable
|
||||
fun App() {
|
||||
var text by remember { mutableStateOf("Hello, World!") }
|
||||
|
||||
MaterialTheme {
|
||||
Button(onClick = {
|
||||
text = "Hello, ${dollar}getPlatformName()}"
|
||||
}) {
|
||||
Text(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
-9
@@ -14,20 +14,11 @@ object Versions {
|
||||
val KTOR = version("2.0.2")
|
||||
val JUNIT = version("4.13.2")
|
||||
val JUNIT5 = version("5.8.2")
|
||||
val JETBRAINS_COMPOSE = version("1.1.1")
|
||||
|
||||
val KOTLIN_VERSION_FOR_COMPOSE = version("1.6.10")
|
||||
val GRADLE_VERSION_FOR_COMPOSE = version("7.4.2")
|
||||
|
||||
object COMPOSE {
|
||||
val ANDROID_ACTIVITY_COMPOSE = version("1.4.0")
|
||||
}
|
||||
|
||||
object ANDROID {
|
||||
val ANDROID_MATERIAL = version("1.5.0")
|
||||
val ANDROIDX_APPCOMPAT = version("1.4.1")
|
||||
val ANDROIDX_CONSTRAINTLAYOUT = version("2.1.3")
|
||||
val ANDROIDX_KTX = version("1.7.0")
|
||||
}
|
||||
|
||||
object KOTLINX {
|
||||
|
||||
+1
-3
@@ -13,7 +13,6 @@ class CoreJvmTargetVersionsProviderService : JvmTargetVersionsProviderService(),
|
||||
|
||||
private val kotlinToJvmTargetVersions: Map<Version, Set<TargetJvmVersion>> = mapOf(
|
||||
Versions.KOTLIN to KOTLIN_14_JVM_TARGETS,
|
||||
Versions.KOTLIN_VERSION_FOR_COMPOSE to KOTLIN_14_JVM_TARGETS
|
||||
)
|
||||
|
||||
private fun listSupportedJvmTargetVersions(kotlinVersion: Version) =
|
||||
@@ -21,7 +20,6 @@ class CoreJvmTargetVersionsProviderService : JvmTargetVersionsProviderService(),
|
||||
}
|
||||
|
||||
override fun listSupportedJvmTargetVersions(projectKind: ProjectKind): Set<TargetJvmVersion> {
|
||||
val version = CoreKotlinVersionProviderService.getKotlinVersion(projectKind)
|
||||
return listSupportedJvmTargetVersions(version)
|
||||
return listSupportedJvmTargetVersions(Versions.KOTLIN)
|
||||
}
|
||||
}
|
||||
+1
-10
@@ -3,18 +3,9 @@ package org.jetbrains.kotlin.tools.projectWizard.core.service
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
|
||||
class CoreKotlinVersionProviderService : KotlinVersionProviderService(), IdeaIndependentWizardService {
|
||||
companion object {
|
||||
internal fun getKotlinVersion(projectKind: ProjectKind): Version = when (projectKind) {
|
||||
ProjectKind.COMPOSE -> Versions.KOTLIN_VERSION_FOR_COMPOSE
|
||||
else -> Versions.KOTLIN
|
||||
}
|
||||
}
|
||||
|
||||
override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion {
|
||||
val version = CoreKotlinVersionProviderService.getKotlinVersion(projectKind)
|
||||
return kotlinVersionWithDefaultValues(version)
|
||||
return kotlinVersionWithDefaultValues(Versions.KOTLIN)
|
||||
}
|
||||
}
|
||||
-56
@@ -3,21 +3,17 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Writer
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.compute
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference
|
||||
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.gradle.GradleIRListBuilder
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradlePropertyAccessIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.BrowserJsSinglePlatformModuleConfigurator.settingsValue
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JSConfigurator.Companion.isApplication
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserBasedConfigurator.Companion.browserSubTarget
|
||||
@@ -26,7 +22,6 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JvmModuleCon
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||
@@ -231,54 +226,3 @@ fun GradleIRListBuilder.commonCssSupport(reader: Reader) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object JsComposeMppConfigurator : JsBrowserBasedConfigurator, SimpleTargetConfigurator {
|
||||
@NonNls
|
||||
override val id = "jsBrowserComposeMpp"
|
||||
|
||||
@NonNls
|
||||
override val suggestedModuleName = "js"
|
||||
|
||||
override val moduleKind = ModuleKind.target
|
||||
|
||||
override val text = KotlinNewProjectWizardBundle.message("module.configurator.simple.js.compose.browser")
|
||||
|
||||
override val moduleSubType = ModuleSubType.js
|
||||
|
||||
override fun createInnerTargetIrs(
|
||||
reader: Reader,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = irsList {
|
||||
+super<SimpleTargetConfigurator>.createInnerTargetIrs(reader, module)
|
||||
"browser" {
|
||||
"testTask" {
|
||||
+"testLogging.showStandardStreams = true"
|
||||
"useKarma" {
|
||||
+"useChromeHeadless()"
|
||||
+"useFirefox()"
|
||||
}
|
||||
}
|
||||
}
|
||||
applicationSupport()
|
||||
}
|
||||
|
||||
override fun Reader.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> = org.jetbrains.kotlin.tools.projectWizard.core.buildList {
|
||||
+DefaultTargetConfigurationIR(
|
||||
module.createTargetAccessIr(moduleSubType),
|
||||
createInnerTargetIrs(this@createTargetIrs, module).toPersistentList(),
|
||||
listOf(GradlePropertyAccessIR("IR"))
|
||||
)
|
||||
}
|
||||
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
modulePath: Path,
|
||||
): TaskResult<Unit> = compute {
|
||||
GradlePlugin.gradleProperties.addValues("kotlin.js.webpack.major.version" to 4) //workaround for KT-48273 TODO:remove once the issue is fixed
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -1,7 +1,6 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList
|
||||
@@ -48,7 +47,6 @@ object Plugins {
|
||||
+ReactJsTemplatesPlugin(context)
|
||||
+SimpleNodeJsTemplatesPlugin(context)
|
||||
+NativeConsoleApplicationTemplatePlugin(context)
|
||||
+ComposeTemplatesPlugin(context)
|
||||
+MobileMppTemplatePlugin(context)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-7
@@ -133,7 +133,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
withAction {
|
||||
val version = version.propertyValue
|
||||
if (version.kind.isStable) return@withAction UNIT_SUCCESS
|
||||
val pluginRepository = version.buildSystemPluginRepository(buildSystemType) ?: return@withAction UNIT_SUCCESS
|
||||
val pluginRepository = version.buildSystemPluginRepository(buildSystemType)
|
||||
BuildSystemPlugin.pluginRepositoreis.addValues(pluginRepository) andThen
|
||||
updateBuildFiles { buildFile ->
|
||||
buildFile.withIrs(
|
||||
@@ -218,12 +218,6 @@ enum class ProjectKind(
|
||||
Multiplatform(KotlinNewProjectWizardBundle.message("project.kind.multiplatform"), supportedBuildSystems = BuildSystemType.ALL_GRADLE),
|
||||
Android(KotlinNewProjectWizardBundle.message("project.kind.android"), supportedBuildSystems = BuildSystemType.ALL_GRADLE),
|
||||
Js(KotlinNewProjectWizardBundle.message("project.kind.kotlin.js"), supportedBuildSystems = BuildSystemType.ALL_GRADLE),
|
||||
COMPOSE(
|
||||
KotlinNewProjectWizardBundle.message("project.kind.compose"),
|
||||
supportedBuildSystems = setOf(BuildSystemType.GradleKotlinDsl),
|
||||
shortName = KotlinNewProjectWizardBundle.message("project.kind.compose.short.name"),
|
||||
message = "uses Kotlin ${Versions.KOTLIN_VERSION_FOR_COMPOSE}"
|
||||
)
|
||||
}
|
||||
|
||||
fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.PluginSettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.andThen
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.compose.ComposeJvmDesktopTemplate
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.compose.ComposeMppModuleTemplate
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.compose.ComposeWebModuleTemplate
|
||||
|
||||
class ComposeTemplatesPlugin(context: Context) : TemplatePlugin(context) {
|
||||
override val path = pluginPath
|
||||
|
||||
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||
listOf(
|
||||
addTemplate,
|
||||
)
|
||||
|
||||
companion object : PluginSettingsOwner() {
|
||||
override val pluginPath = "template.compose"
|
||||
|
||||
val addTemplate by pipelineTask(GenerationPhase.PREPARE) {
|
||||
withAction {
|
||||
TemplatesPlugin.addTemplate.execute(ComposeJvmDesktopTemplate()) andThen
|
||||
TemplatesPlugin.addTemplate.execute(ComposeJvmDesktopTemplate()) andThen
|
||||
TemplatesPlugin.addTemplate.execute(ComposeMppModuleTemplate()) andThen
|
||||
TemplatesPlugin.addTemplate.execute(ComposeWebModuleTemplate)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-154
@@ -4,12 +4,9 @@ package org.jetbrains.kotlin.tools.projectWizard.projectTemplates
|
||||
|
||||
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.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
@@ -17,7 +14,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.compose.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.mpp.MobileMppTemplate
|
||||
|
||||
abstract class ProjectTemplate : DisplayableSettingItem {
|
||||
@@ -75,9 +71,6 @@ abstract class ProjectTemplate : DisplayableSettingItem {
|
||||
FrontendApplicationProjectTemplate,
|
||||
ReactApplicationProjectTemplate,
|
||||
NodeJsApplicationProjectTemplate,
|
||||
ComposeDesktopApplicationProjectTemplate,
|
||||
ComposeMultiplatformApplicationProjectTemplate,
|
||||
ComposeWebApplicationProjectTemplate,
|
||||
ConsoleApplicationProjectTemplateWithSample
|
||||
)
|
||||
|
||||
@@ -90,6 +83,7 @@ abstract class ProjectTemplate : DisplayableSettingItem {
|
||||
private infix fun <V : Any, T : SettingType<V>> PluginSettingReference<V, T>.withValue(value: V): SettingWithValue<V, T> =
|
||||
SettingWithValue(this, value)
|
||||
|
||||
@Suppress("unused")
|
||||
private inline infix fun <V : Any, reified T : SettingType<V>> PluginSetting<V, T>.withValue(value: V): SettingWithValue<V, T> =
|
||||
SettingWithValue(reference, value)
|
||||
|
||||
@@ -341,150 +335,3 @@ object NodeJsApplicationProjectTemplate : ProjectTemplate() {
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
object ComposeDesktopApplicationProjectTemplate : ProjectTemplate() {
|
||||
override val title = KotlinNewProjectWizardBundle.message("project.template.compose.desktop.title")
|
||||
override val description = KotlinNewProjectWizardBundle.message("project.template.compose.desktop.description")
|
||||
override val id = "composeDesktopApplication"
|
||||
|
||||
@NonNls
|
||||
override val suggestedProjectName = "myComposeDesktopApplication"
|
||||
override val projectKind = ProjectKind.COMPOSE
|
||||
|
||||
override val setsPluginSettings: List<SettingWithValue<*, *>>
|
||||
get() = listOf(
|
||||
GradlePlugin.gradleVersion withValue Versions.GRADLE_VERSION_FOR_COMPOSE,
|
||||
StructurePlugin.version withValue "1.0",
|
||||
)
|
||||
|
||||
override val setsModules: List<Module>
|
||||
get() = listOf(
|
||||
Module(
|
||||
"compose",
|
||||
JvmSinglePlatformModuleConfigurator,
|
||||
template = ComposeJvmDesktopTemplate(),
|
||||
sourceSets = SourcesetType.ALL.map { type ->
|
||||
Sourceset(type, dependencies = emptyList())
|
||||
},
|
||||
subModules = emptyList()
|
||||
).withConfiguratorSettings<JvmSinglePlatformModuleConfigurator> {
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
JvmModuleConfigurator.targetJvmVersion withValue TargetJvmVersion.JVM_11
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
object ComposeMultiplatformApplicationProjectTemplate : ProjectTemplate() {
|
||||
override val title = KotlinNewProjectWizardBundle.message("project.template.compose.multiplatform.title")
|
||||
override val description = KotlinNewProjectWizardBundle.message("project.template.compose.multiplatform.description")
|
||||
override val id = "composeMultiplatformApplication"
|
||||
|
||||
@NonNls
|
||||
override val suggestedProjectName = "myComposeMultiplatformApplication"
|
||||
override val projectKind = ProjectKind.COMPOSE
|
||||
|
||||
override val setsPluginSettings: List<SettingWithValue<*, *>>
|
||||
get() = listOf(
|
||||
GradlePlugin.gradleVersion withValue Versions.GRADLE_VERSION_FOR_COMPOSE,
|
||||
StructurePlugin.version withValue "1.0",
|
||||
)
|
||||
|
||||
override val setsModules: List<Module>
|
||||
get() = buildList {
|
||||
val common = MultiplatformModule(
|
||||
"common",
|
||||
template = ComposeMppModuleTemplate(),
|
||||
listOf(
|
||||
ModuleType.common.createDefaultTarget().withConfiguratorSettings<CommonTargetConfigurator> {
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
},
|
||||
Module(
|
||||
"android",
|
||||
AndroidTargetConfigurator,
|
||||
template = ComposeCommonAndroidTemplate(),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = emptyList()
|
||||
).withConfiguratorSettings<AndroidTargetConfigurator> {
|
||||
configurator.androidPlugin withValue AndroidGradlePlugin.LIBRARY
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
},
|
||||
Module(
|
||||
"desktop",
|
||||
JvmTargetConfigurator,
|
||||
template = ComposeCommonDesktopTemplate(),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = emptyList()
|
||||
).withConfiguratorSettings<JvmTargetConfigurator> {
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
JvmModuleConfigurator.targetJvmVersion withValue TargetJvmVersion.JVM_11
|
||||
}
|
||||
)
|
||||
)
|
||||
+Module(
|
||||
"android",
|
||||
AndroidSinglePlatformModuleConfigurator,
|
||||
template = ComposeAndroidTemplate(),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = emptyList(),
|
||||
dependencies = mutableListOf(ModuleReference.ByModule(common))
|
||||
).withConfiguratorSettings<AndroidSinglePlatformModuleConfigurator> {
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
}
|
||||
+Module(
|
||||
"desktop",
|
||||
MppModuleConfigurator,
|
||||
template = ComposeCommonDesktopTemplate(),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = listOf(
|
||||
Module(
|
||||
"jvm",
|
||||
JvmTargetConfigurator,
|
||||
template = ComposeJvmDesktopTemplate(),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = emptyList(),
|
||||
dependencies = mutableListOf(ModuleReference.ByModule(common))
|
||||
).withConfiguratorSettings<JvmTargetConfigurator> {
|
||||
JvmModuleConfigurator.testFramework withValue KotlinTestFramework.NONE
|
||||
JvmModuleConfigurator.targetJvmVersion withValue TargetJvmVersion.JVM_11
|
||||
}
|
||||
),
|
||||
)
|
||||
+common
|
||||
}
|
||||
}
|
||||
|
||||
object ComposeWebApplicationProjectTemplate : ProjectTemplate() {
|
||||
override val title = KotlinNewProjectWizardBundle.message("project.template.compose.web.title")
|
||||
override val description = KotlinNewProjectWizardBundle.message("project.template.compose.web.description")
|
||||
override val id = "composeWebApplication"
|
||||
|
||||
@NonNls
|
||||
override val suggestedProjectName = "myComposeWebApplication"
|
||||
override val projectKind = ProjectKind.COMPOSE
|
||||
|
||||
override val setsPluginSettings: List<SettingWithValue<*, *>>
|
||||
get() = listOf(
|
||||
GradlePlugin.gradleVersion withValue Versions.GRADLE_VERSION_FOR_COMPOSE,
|
||||
StructurePlugin.version withValue "1.0",
|
||||
)
|
||||
|
||||
override val setsModules: List<Module>
|
||||
get() = listOf(
|
||||
Module(
|
||||
"web",
|
||||
MppModuleConfigurator,
|
||||
template = null,
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = listOf(
|
||||
Module(
|
||||
"js",
|
||||
JsComposeMppConfigurator,
|
||||
template = ComposeWebModuleTemplate,
|
||||
permittedTemplateIds = setOf(ComposeWebModuleTemplate.id),
|
||||
sourceSets = createDefaultSourceSets(),
|
||||
subModules = emptyList()
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
+1
-1
@@ -33,6 +33,7 @@ data class DefaultRepository(val type: Type) : Repository {
|
||||
|
||||
interface CustomMavenRepository : Repository
|
||||
|
||||
@Suppress("unused")
|
||||
data class CustomMavenRepositoryImpl(val repository: String, val base: String) : CustomMavenRepository {
|
||||
override val url: String = "$base/$repository"
|
||||
|
||||
@@ -61,7 +62,6 @@ object Repositories {
|
||||
val KOTLINX_HTML = JetBrainsSpace("public/p/kotlinx-html/maven")
|
||||
val KOTLIN_JS_WRAPPERS = DefaultRepository.MAVEN_CENTRAL
|
||||
val KOTLIN_EAP_MAVEN_CENTRAL = DefaultRepository.MAVEN_CENTRAL
|
||||
val JETBRAINS_COMPOSE_DEV = JetBrainsSpace("public/p/compose/dev")
|
||||
val JETBRAINS_KOTLIN_DEV = JetBrainsSpace("kotlin/p/kotlin/dev")
|
||||
val JETBRAINS_KOTLIN_BOOTSTRAP = CacheRedirector(
|
||||
"maven.pkg.jetbrains.space",
|
||||
|
||||
-140
@@ -1,140 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates.compose
|
||||
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
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.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.AndroidConfigIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage
|
||||
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.templates.FileTemplateDescriptor
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
|
||||
class ComposeAndroidTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeAndroid"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
|
||||
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator.moduleType == ModuleType.android
|
||||
&& projectKind == ProjectKind.COMPOSE
|
||||
&& module.kind == ModuleKind.singlePlatformAndroid
|
||||
|
||||
|
||||
override fun Writer.getIrsToAddToBuildFile(
|
||||
module: ModuleIR
|
||||
) = irsList {
|
||||
+GradleOnlyPluginByNameIR("org.jetbrains.compose", version = Versions.JETBRAINS_COMPOSE)
|
||||
+RepositoryIR(Repositories.JETBRAINS_COMPOSE_DEV)
|
||||
+RepositoryIR(DefaultRepository.GOOGLE)
|
||||
+Dependencies.ACTIVITY_COMPOSE
|
||||
}
|
||||
|
||||
override fun Reader.updateBuildFileIRs(irs: List<BuildSystemIR>): List<BuildSystemIR> {
|
||||
val androidIR = irs.firstNotNullOfOrNull { ir-> ir.takeIf { ir is AndroidConfigIR } }
|
||||
if (androidIR != null && androidIR is AndroidConfigIR) {
|
||||
androidIR.androidSdkVersion = "31"
|
||||
}
|
||||
return irs
|
||||
}
|
||||
|
||||
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = buildList {
|
||||
+Dependencies.ACTIVITY_COMPOSE
|
||||
}
|
||||
|
||||
override fun Reader.updateModuleIR(module: ModuleIR): ModuleIR {
|
||||
val irs = module.irs.filterNot { ir ->
|
||||
ir == AndroidSinglePlatformModuleConfigurator.DEPENDENCIES.APP_COMPAT
|
||||
|| ir == AndroidSinglePlatformModuleConfigurator.DEPENDENCIES.CONSTRAINT_LAYOUT
|
||||
|| ir == AndroidModuleConfigurator.DEPENDENCIES.MATERIAL
|
||||
}
|
||||
return module.withReplacedIrs(irs.toPersistentList())
|
||||
}
|
||||
|
||||
override fun Writer.runArbitratyTask(module: ModuleIR): TaskResult<Unit> = compute {
|
||||
BuildSystemPlugin.pluginRepositoreis.addValues(Repositories.JETBRAINS_COMPOSE_DEV, DefaultRepository.GOOGLE).ensure()
|
||||
|
||||
//TODO hacky!
|
||||
TemplatesPlugin.fileTemplatesToRender.update { templates ->
|
||||
templates.mapNotNull { template ->
|
||||
val descriptor = template.descriptor as? FileTemplateDescriptor
|
||||
when {
|
||||
descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.activityMainXml
|
||||
|| descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.colorsXml
|
||||
|| descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml -> null
|
||||
descriptor?.templateId == "android/MainActivity.kt.vm" -> {
|
||||
template.copy(descriptor = mainActivityKt(module.originalModule.javaPackage(pomIR())))
|
||||
}
|
||||
descriptor?.templateId == "android/AndroidManifest.xml.vm" -> {
|
||||
template.copy(descriptor = Descriptors.manifestXml)
|
||||
}
|
||||
else -> template
|
||||
}
|
||||
}.asSuccess()
|
||||
}
|
||||
}
|
||||
|
||||
private fun mainActivityKt(javaPackage: JavaPackage) = FileTemplateDescriptor(
|
||||
"composeAndroid/MainActivity.kt.vm",
|
||||
"src" / "main" / "java" / javaPackage.asPath() / "MainActivity.kt"
|
||||
)
|
||||
|
||||
object Descriptors {
|
||||
val manifestXml = FileTemplateDescriptor(
|
||||
templateId = "composeAndroid/AndroidManifest.xml.vm",
|
||||
relativePath = "src" / "main" / "AndroidManifest.xml",
|
||||
)
|
||||
}
|
||||
|
||||
object Dependencies {
|
||||
val ACTIVITY_COMPOSE = ArtifactBasedLibraryDependencyIR(
|
||||
MavenArtifact(Repositories.JETBRAINS_COMPOSE_DEV, "androidx.activity", "activity-compose"),
|
||||
version = Versions.COMPOSE.ANDROID_ACTIVITY_COMPOSE,
|
||||
dependencyType = DependencyType.MAIN,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class ComposeCommonAndroidTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeCommonAndroid"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
|
||||
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator.moduleType == ModuleType.common
|
||||
&& projectKind == ProjectKind.COMPOSE
|
||||
&& module.kind == ModuleKind.singlePlatformAndroid
|
||||
|
||||
override fun Reader.updateBuildFileIRs(irs: List<BuildSystemIR>): List<BuildSystemIR> {
|
||||
val androidIR = irs.firstNotNullOfOrNull { it as? AndroidConfigIR }
|
||||
if (androidIR != null) {
|
||||
androidIR.androidSdkVersion = "31"
|
||||
}
|
||||
return irs
|
||||
}
|
||||
}
|
||||
-87
@@ -1,87 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates.compose
|
||||
|
||||
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.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleImportIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.*
|
||||
|
||||
class ComposeJvmDesktopTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeDesktopTemplate"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator.moduleType == ModuleType.jvm && projectKind == ProjectKind.COMPOSE
|
||||
&& (module.kind == ModuleKind.singlePlatformJvm || module.kind == ModuleKind.target)
|
||||
|
||||
|
||||
override fun Writer.getIrsToAddToBuildFile(
|
||||
module: ModuleIR
|
||||
) = irsList {
|
||||
+RepositoryIR(Repositories.JETBRAINS_COMPOSE_DEV)
|
||||
+RepositoryIR(DefaultRepository.GOOGLE)
|
||||
+GradleOnlyPluginByNameIR("org.jetbrains.compose", version = Versions.JETBRAINS_COMPOSE)
|
||||
|
||||
+GradleImportIR("org.jetbrains.compose.desktop.application.dsl.TargetFormat")
|
||||
"compose.desktop" {
|
||||
"application" {
|
||||
"mainClass" assign const("MainKt")
|
||||
|
||||
"nativeDistributions" {
|
||||
"targetFormats"(raw("TargetFormat.Dmg"), raw("TargetFormat.Msi"), raw("TargetFormat.Deb"))
|
||||
"packageName" assign const(module.name)
|
||||
"packageVersion" assign const("1.0.0")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+GradleImportIR("org.jetbrains.compose.compose")
|
||||
}
|
||||
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = listOf(
|
||||
CustomGradleDependencyDependencyIR("compose.desktop.currentOs", dependencyType = DependencyType.MAIN, DependencyKind.implementation)
|
||||
)
|
||||
|
||||
override fun Writer.runArbitratyTask(module: ModuleIR): TaskResult<Unit> =
|
||||
BuildSystemPlugin.pluginRepositoreis.addValues(Repositories.JETBRAINS_COMPOSE_DEV, DefaultRepository.GOOGLE)
|
||||
|
||||
override fun Reader.getFileTemplates(module: ModuleIR) = buildList<FileTemplateDescriptorWithPath> {
|
||||
val dependsOnMppModule: Module? =
|
||||
module.originalModule.dependencies.map { moduleByReference(it) }.firstOrNull { it.template is ComposeMppModuleTemplate }
|
||||
if (dependsOnMppModule == null) {
|
||||
+(FileTemplateDescriptor("$id/main.kt", "Main.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
} else {
|
||||
val javaPackage = dependsOnMppModule.javaPackage(pomIR()).asCodePackage()
|
||||
+(FileTemplateDescriptor("composeMpp/main.kt.vm", "Main.kt".asPath())
|
||||
asSrcOf SourcesetType.main
|
||||
withSettings ("sharedPackage" to javaPackage)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ComposeCommonDesktopTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeCommonDesktopTemplate"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator.moduleType == ModuleType.jvm && projectKind == ProjectKind.COMPOSE
|
||||
}
|
||||
-93
@@ -1,93 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates.compose
|
||||
|
||||
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.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleImportIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.mpp.applyMppStructure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.mpp.mppSources
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
|
||||
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.Repositories
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
|
||||
class ComposeMppModuleTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeMppModule"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.description")
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator == MppModuleConfigurator && projectKind == ProjectKind.COMPOSE
|
||||
|
||||
override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = irsList {
|
||||
+GradleImportIR("org.jetbrains.compose.compose")
|
||||
+GradleOnlyPluginByNameIR("org.jetbrains.compose", version = Versions.JETBRAINS_COMPOSE)
|
||||
+RepositoryIR(Repositories.JETBRAINS_COMPOSE_DEV)
|
||||
+RepositoryIR(DefaultRepository.GOOGLE)
|
||||
}
|
||||
|
||||
override fun Reader.updateModuleIR(module: ModuleIR): ModuleIR = when (module.originalModule.configurator) {
|
||||
CommonTargetConfigurator -> module.withIrs(
|
||||
CustomGradleDependencyDependencyIR("compose.runtime", DependencyType.MAIN, DependencyKind.api),
|
||||
CustomGradleDependencyDependencyIR("compose.foundation", DependencyType.MAIN, DependencyKind.api),
|
||||
CustomGradleDependencyDependencyIR("compose.material", DependencyType.MAIN, DependencyKind.api),
|
||||
)
|
||||
AndroidTargetConfigurator -> module.withIrs(
|
||||
AndroidSinglePlatformModuleConfigurator.DEPENDENCIES.APP_COMPAT.withDependencyKind(DependencyKind.api),
|
||||
DEPENDENCIES.ANDROID_KTX.withDependencyKind(DependencyKind.api)
|
||||
).withoutIrs { it == AndroidModuleConfigurator.DEPENDENCIES.MATERIAL }
|
||||
JvmTargetConfigurator -> module.withIrs(
|
||||
CustomGradleDependencyDependencyIR("compose.preview", DependencyType.MAIN, DependencyKind.api),
|
||||
)
|
||||
else -> module
|
||||
}
|
||||
|
||||
override fun Writer.runArbitratyTask(module: ModuleIR): TaskResult<Unit> {
|
||||
val webSubmodule = module.originalModule.subModules.filter({ it.template is ComposeWebModuleTemplate }).firstOrNull()
|
||||
if (webSubmodule != null) return UNIT_SUCCESS //disabling platform.kt creation for web module
|
||||
|
||||
return inContextOfModuleConfigurator(module.originalModule) {
|
||||
val javaPackage = module.originalModule.javaPackage(pomIR())
|
||||
val mpp = mppSources(javaPackage) {
|
||||
mppFile("platform.kt") {
|
||||
function("getPlatformName(): String") {
|
||||
actualFor(ModuleSubType.jvm, actualBody = """return "Desktop" """)
|
||||
actualFor(ModuleSubType.android, actualBody = """return "Android" """)
|
||||
default("""return "Platform" """)
|
||||
}
|
||||
}
|
||||
filesFor(ModuleSubType.common) {
|
||||
file(FileTemplateDescriptor("composeMpp/App.kt.vm", relativePath = null), "App.kt", SourcesetType.main)
|
||||
}
|
||||
filesFor(ModuleSubType.jvm) {
|
||||
file(FileTemplateDescriptor("composeMpp/DesktopApp.kt.vm", relativePath = null), "DesktopApp.kt", SourcesetType.main)
|
||||
}
|
||||
}
|
||||
applyMppStructure(mpp, module.originalModule, module.path)
|
||||
}
|
||||
}
|
||||
|
||||
object DEPENDENCIES {
|
||||
val ANDROID_KTX = ArtifactBasedLibraryDependencyIR(
|
||||
MavenArtifact(DefaultRepository.GOOGLE, "androidx.core", "core-ktx"),
|
||||
version = Versions.ANDROID.ANDROIDX_KTX,
|
||||
dependencyType = DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
}
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates.compose
|
||||
|
||||
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.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleImportIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.*
|
||||
|
||||
object ComposeWebModuleTemplate : Template() {
|
||||
@NonNls
|
||||
override val id: String = "composeWebTemplate"
|
||||
|
||||
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.web.title")
|
||||
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.web.description")
|
||||
|
||||
override fun isApplicableTo(module: Module, projectKind: ProjectKind, reader: Reader): Boolean =
|
||||
module.configurator.moduleType == ModuleType.js
|
||||
&& projectKind == ProjectKind.COMPOSE
|
||||
&& when (module.configurator) {
|
||||
JsComposeMppConfigurator -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
override fun Writer.getIrsToAddToBuildFile(
|
||||
module: ModuleIR
|
||||
) = irsList {
|
||||
+RepositoryIR(Repositories.JETBRAINS_COMPOSE_DEV)
|
||||
+RepositoryIR(DefaultRepository.GOOGLE)
|
||||
//+GradleOnlyPluginByNameIR("org.jetbrains.compose", version = Versions.JETBRAINS_COMPOSE) //this module is intended to be used inside Compose MPP module!
|
||||
+GradleImportIR("org.jetbrains.compose.compose")
|
||||
}
|
||||
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = listOf(
|
||||
CustomGradleDependencyDependencyIR("compose.web.core", dependencyType = DependencyType.MAIN, DependencyKind.implementation),
|
||||
CustomGradleDependencyDependencyIR("compose.runtime", dependencyType = DependencyType.MAIN, DependencyKind.implementation),
|
||||
CustomGradleDependencyDependencyIR("kotlin(\"test-js\")", dependencyType = DependencyType.TEST, DependencyKind.implementation)
|
||||
)
|
||||
|
||||
override fun Writer.runArbitratyTask(module: ModuleIR): TaskResult<Unit> =
|
||||
BuildSystemPlugin.pluginRepositoreis.addValues(Repositories.JETBRAINS_COMPOSE_DEV)
|
||||
|
||||
override fun Reader.getFileTemplates(module: ModuleIR) = buildList<FileTemplateDescriptorWithPath> {
|
||||
+(FileTemplateDescriptor("$id/main.kt", "Main.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
+(FileTemplateDescriptor("$id/index.html.vm") asResourceOf SourcesetType.main)
|
||||
}
|
||||
}
|
||||
-4
@@ -23,10 +23,6 @@ private const val SNAPSHOT_TAG = "snapshot"
|
||||
|
||||
class IdeaKotlinVersionProviderService : KotlinVersionProviderService(), IdeaWizardService {
|
||||
override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion {
|
||||
if (projectKind == ProjectKind.COMPOSE) {
|
||||
val version = Versions.KOTLIN_VERSION_FOR_COMPOSE
|
||||
return kotlinVersionWithDefaultValues(version)
|
||||
}
|
||||
val version = getPatchedKotlinVersion()
|
||||
?: getKotlinVersionFromCompiler()
|
||||
?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion()
|
||||
|
||||
-3
@@ -106,9 +106,6 @@ private val ProjectTemplate.icon: Icon?
|
||||
FrontendApplicationProjectTemplate -> KotlinIcons.Wizard.JS
|
||||
ReactApplicationProjectTemplate -> KotlinIcons.Wizard.REACT_JS
|
||||
NodeJsApplicationProjectTemplate -> KotlinIcons.Wizard.NODE_JS
|
||||
ComposeDesktopApplicationProjectTemplate -> KotlinIcons.Wizard.COMPOSE
|
||||
ComposeMultiplatformApplicationProjectTemplate -> KotlinIcons.Wizard.COMPOSE
|
||||
ComposeWebApplicationProjectTemplate -> KotlinIcons.Wizard.COMPOSE
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
||||
-1
@@ -77,7 +77,6 @@ abstract class AbstractBuildFileGenerationTest : UsefulTestCase() {
|
||||
KOTLIN_REPO_BOOTSTRAP_PLACEHOLDER
|
||||
)
|
||||
.replace("gradle-${Versions.GRADLE.text}-bin.zip", "gradle-GRADLE_VERSION-bin.zip")
|
||||
.replace("gradle-${Versions.GRADLE_VERSION_FOR_COMPOSE.text}-bin.zip", "gradle-GRADLE_VERSION_FOR_COMPOSE-bin.zip")
|
||||
}
|
||||
additionalChecks(expectedDirectory, tempDirectory)
|
||||
}
|
||||
|
||||
+15
-20
@@ -3,8 +3,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.cli
|
||||
|
||||
import org.jetbrains.kotlin.idea.codeInsight.gradle.KotlinGradlePluginVersions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
|
||||
@@ -12,25 +10,22 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
|
||||
class KotlinVersionProviderTestWizardService : KotlinVersionProviderService(), TestWizardService {
|
||||
override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion =
|
||||
if (projectKind == ProjectKind.COMPOSE) {
|
||||
kotlinVersionWithDefaultValues(Versions.KOTLIN_VERSION_FOR_COMPOSE)
|
||||
} else {
|
||||
val repositories = listOf(
|
||||
Repositories.JETBRAINS_KOTLIN_BOOTSTRAP,
|
||||
getKotlinVersionRepository(TEST_KOTLIN_VERSION),
|
||||
DefaultRepository.MAVEN_LOCAL
|
||||
)
|
||||
WizardKotlinVersion(
|
||||
TEST_KOTLIN_VERSION,
|
||||
override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion {
|
||||
val repositories = listOf(
|
||||
Repositories.JETBRAINS_KOTLIN_BOOTSTRAP,
|
||||
getKotlinVersionRepository(TEST_KOTLIN_VERSION),
|
||||
DefaultRepository.MAVEN_LOCAL
|
||||
)
|
||||
return WizardKotlinVersion(
|
||||
TEST_KOTLIN_VERSION,
|
||||
getKotlinVersionKind(TEST_KOTLIN_VERSION),
|
||||
repositories,
|
||||
getBuildSystemPluginRepository(
|
||||
getKotlinVersionKind(TEST_KOTLIN_VERSION),
|
||||
repositories,
|
||||
getBuildSystemPluginRepository(
|
||||
getKotlinVersionKind(TEST_KOTLIN_VERSION),
|
||||
repositories
|
||||
),
|
||||
)
|
||||
}
|
||||
repositories
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
companion object {
|
||||
val TEST_KOTLIN_VERSION by lazy {
|
||||
|
||||
-10
@@ -23,16 +23,6 @@ public class ProjectTemplateBuildFileGenerationTestGenerated extends AbstractPro
|
||||
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("composeDesktopApplication")
|
||||
public void testComposeDesktopApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeDesktopApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("composeMultiplatformApplication")
|
||||
public void testComposeMultiplatformApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeMultiplatformApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("consoleApplication")
|
||||
public void testConsoleApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/consoleApplication/");
|
||||
|
||||
-30
@@ -25,16 +25,6 @@ public abstract class ProjectTemplateNewWizardProjectImportTestGenerated extends
|
||||
KotlinTestUtils.runTest(this::doTestGradleKts, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("composeDesktopApplication")
|
||||
public void testComposeDesktopApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeDesktopApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("composeMultiplatformApplication")
|
||||
public void testComposeMultiplatformApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeMultiplatformApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("consoleApplication")
|
||||
public void testConsoleApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/consoleApplication/");
|
||||
@@ -68,16 +58,6 @@ public abstract class ProjectTemplateNewWizardProjectImportTestGenerated extends
|
||||
KotlinTestUtils.runTest(this::doTestGradleGroovy, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("composeDesktopApplication")
|
||||
public void testComposeDesktopApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeDesktopApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("composeMultiplatformApplication")
|
||||
public void testComposeMultiplatformApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeMultiplatformApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("consoleApplication")
|
||||
public void testConsoleApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/consoleApplication/");
|
||||
@@ -111,16 +91,6 @@ public abstract class ProjectTemplateNewWizardProjectImportTestGenerated extends
|
||||
KotlinTestUtils.runTest(this::doTestMaven, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("composeDesktopApplication")
|
||||
public void testComposeDesktopApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeDesktopApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("composeMultiplatformApplication")
|
||||
public void testComposeMultiplatformApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/composeMultiplatformApplication/");
|
||||
}
|
||||
|
||||
@TestMetadata("consoleApplication")
|
||||
public void testConsoleApplication() throws Exception {
|
||||
runTest("testData/projectTemplatesBuildFileGeneration/consoleApplication/");
|
||||
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.4.0'
|
||||
id 'org.jetbrains.compose' version '0.1.0-build63'
|
||||
id 'application'
|
||||
}
|
||||
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.pkg.jetbrains.space/public/p/compose/dev' }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation compose.desktop.all
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
compileTestKotlin {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
application {
|
||||
mainClassName = 'MainKt'
|
||||
}
|
||||
-36
@@ -1,36 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.6.10"
|
||||
id("org.jetbrains.compose") version "1.1.1"
|
||||
}
|
||||
|
||||
group = "me.user"
|
||||
version = "1.0"
|
||||
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(compose.desktop.currentOs)
|
||||
}
|
||||
|
||||
tasks.withType<KotlinCompile> {
|
||||
kotlinOptions.jvmTarget = "11"
|
||||
}
|
||||
|
||||
compose.desktop {
|
||||
application {
|
||||
mainClass = "MainKt"
|
||||
nativeDistributions {
|
||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
||||
packageName = "composeDesktopApplication"
|
||||
packageVersion = "1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
-1
@@ -1 +0,0 @@
|
||||
kotlin.code.style=official
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-GRADLE_VERSION-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
// runForGradleGroovy false
|
||||
// keepKotlinVersion true
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.pkg.jetbrains.space/public/p/compose/dev' }
|
||||
}
|
||||
|
||||
}
|
||||
rootProject.name = 'composeDesktopApplication'
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
google()
|
||||
gradlePluginPortal()
|
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
|
||||
}
|
||||
rootProject.name = "composeDesktopApplication"
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
plugins {
|
||||
id 'org.jetbrains.compose' version '0.1.0-build63'
|
||||
id 'com.android.application'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
}
|
||||
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':common')
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
defaultConfig {
|
||||
applicationId 'me.user.android'
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 30
|
||||
versionCode 1
|
||||
versionName '1.0'
|
||||
}
|
||||
buildTypes {
|
||||
'release' {
|
||||
minifyEnabled false
|
||||
}
|
||||
}
|
||||
}
|
||||
-37
@@ -1,37 +0,0 @@
|
||||
plugins {
|
||||
id("org.jetbrains.compose") version "1.1.1"
|
||||
id("com.android.application")
|
||||
kotlin("android")
|
||||
}
|
||||
|
||||
group = "me.user"
|
||||
version = "1.0"
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":common"))
|
||||
implementation("androidx.activity:activity-compose:1.4.0")
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion(31)
|
||||
defaultConfig {
|
||||
applicationId = "me.user.android"
|
||||
minSdkVersion(24)
|
||||
targetSdkVersion(31)
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
}
|
||||
}
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath('org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0')
|
||||
classpath('com.android.tools.build:gradle:4.0.1')
|
||||
}
|
||||
}
|
||||
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.pkg.jetbrains.space/public/p/compose/dev' }
|
||||
}
|
||||
}
|
||||
-23
@@ -1,23 +0,0 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
jcenter()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10")
|
||||
classpath("com.android.tools.build:gradle:7.0.4")
|
||||
}
|
||||
}
|
||||
|
||||
group = "me.user"
|
||||
version = "1.0"
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
}
|
||||
-61
@@ -1,61 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.multiplatform'
|
||||
id 'org.jetbrains.compose' version '0.1.0-build63'
|
||||
id 'com.android.library'
|
||||
}
|
||||
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
}
|
||||
|
||||
kotlin {
|
||||
android()
|
||||
jvm('desktop') {
|
||||
compilations.all {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api compose.runtime
|
||||
api compose.foundation
|
||||
api compose.material
|
||||
}
|
||||
}
|
||||
commonTest {
|
||||
|
||||
}
|
||||
androidMain {
|
||||
dependencies {
|
||||
api 'androidx.appcompat:appcompat:1.2.0'
|
||||
api 'androidx.core:core-ktx:1.3.1'
|
||||
}
|
||||
}
|
||||
androidTest {
|
||||
dependencies {
|
||||
implementation 'junit:junit:4.13'
|
||||
}
|
||||
}
|
||||
desktopMain {
|
||||
|
||||
}
|
||||
desktopTest {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
sourceSets.main.manifest.srcFile('src/androidMain/AndroidManifest.xml')
|
||||
defaultConfig {
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 30
|
||||
}
|
||||
}
|
||||
-63
@@ -1,63 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
id("org.jetbrains.compose") version "1.1.1"
|
||||
id("com.android.library")
|
||||
}
|
||||
|
||||
group = "me.user"
|
||||
version = "1.0"
|
||||
|
||||
kotlin {
|
||||
android()
|
||||
jvm("desktop") {
|
||||
compilations.all {
|
||||
kotlinOptions.jvmTarget = "11"
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
api(compose.runtime)
|
||||
api(compose.foundation)
|
||||
api(compose.material)
|
||||
}
|
||||
}
|
||||
val commonTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test"))
|
||||
}
|
||||
}
|
||||
val androidMain by getting {
|
||||
dependencies {
|
||||
api("androidx.appcompat:appcompat:1.4.1")
|
||||
api("androidx.core:core-ktx:1.7.0")
|
||||
}
|
||||
}
|
||||
val androidTest by getting {
|
||||
dependencies {
|
||||
implementation("junit:junit:4.13.2")
|
||||
}
|
||||
}
|
||||
val desktopMain by getting {
|
||||
dependencies {
|
||||
api(compose.preview)
|
||||
}
|
||||
}
|
||||
val desktopTest by getting
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion(31)
|
||||
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
|
||||
defaultConfig {
|
||||
minSdkVersion(24)
|
||||
targetSdkVersion(31)
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm'
|
||||
id 'org.jetbrains.compose' version '0.1.0-build63'
|
||||
id 'application'
|
||||
}
|
||||
|
||||
group = 'me.user'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
dependencies {
|
||||
implementation project(':common')
|
||||
implementation compose.desktop.all
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
compileTestKotlin {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
application {
|
||||
mainClassName = 'MainKt'
|
||||
}
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
import org.jetbrains.compose.compose
|
||||
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
id("org.jetbrains.compose") version "1.1.1"
|
||||
}
|
||||
|
||||
group = "me.user"
|
||||
version = "1.0"
|
||||
|
||||
kotlin {
|
||||
jvm {
|
||||
compilations.all {
|
||||
kotlinOptions.jvmTarget = "11"
|
||||
}
|
||||
withJava()
|
||||
}
|
||||
sourceSets {
|
||||
val jvmMain by getting {
|
||||
dependencies {
|
||||
implementation(project(":common"))
|
||||
implementation(compose.desktop.currentOs)
|
||||
}
|
||||
}
|
||||
val jvmTest by getting
|
||||
}
|
||||
}
|
||||
|
||||
compose.desktop {
|
||||
application {
|
||||
mainClass = "MainKt"
|
||||
nativeDistributions {
|
||||
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
|
||||
packageName = "jvm"
|
||||
packageVersion = "1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
kotlin.code.style=official
|
||||
android.useAndroidX=true
|
||||
kotlin.mpp.enableGranularSourceSetsMetadata=true
|
||||
kotlin.native.enableDependencyPropagation=false
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-GRADLE_VERSION-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
gradlePluginPortal()
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.pkg.jetbrains.space/public/p/compose/dev' }
|
||||
}
|
||||
|
||||
}
|
||||
rootProject.name = 'composeMultiplatformApplication'
|
||||
|
||||
|
||||
include(':android')
|
||||
include(':desktop')
|
||||
include(':common')
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
gradlePluginPortal()
|
||||
mavenCentral()
|
||||
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
|
||||
}
|
||||
|
||||
}
|
||||
rootProject.name = "composeMultiplatformApplication"
|
||||
|
||||
|
||||
include(":android")
|
||||
include(":desktop")
|
||||
include(":common")
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
// runForGradleGroovy false
|
||||
// keepKotlinVersion true
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
android:
|
||||
androidSdkPath: android.sdk
|
||||
Reference in New Issue
Block a user