Wizard: add option to enable Java support for JVM targets
#KT-36179 fixed
This commit is contained in:
+15
@@ -45,6 +45,11 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmTargetWithJava")
|
||||
public void testJvmTargetWithJava() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
@@ -98,6 +103,11 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmTargetWithJava")
|
||||
public void testJvmTargetWithJava() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
@@ -151,6 +161,11 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmTargetWithJava")
|
||||
public void testJvmTargetWithJava() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.multiplatform' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
kotlin {
|
||||
jvm {
|
||||
compilations.all {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
withJava()
|
||||
}
|
||||
sourceSets {
|
||||
jvmMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib-jdk8')
|
||||
}
|
||||
}
|
||||
jvmTest {
|
||||
dependencies {
|
||||
implementation kotlin('test-junit')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
plugins {
|
||||
kotlin("multiplatform") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
kotlin {
|
||||
jvm {
|
||||
compilations.all {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
withJava()
|
||||
}
|
||||
sourceSets {
|
||||
val jvmMain by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
}
|
||||
val jvmTest by getting {
|
||||
dependencies {
|
||||
implementation(kotlin("test-junit"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
rootProject.name = 'generatedProject'
|
||||
+1
@@ -0,0 +1 @@
|
||||
rootProject.name = "generatedProject"
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
kotlin:
|
||||
projectKind: Multiplatform
|
||||
modules:
|
||||
- type: multiplatform
|
||||
name: a
|
||||
subModules:
|
||||
- type:
|
||||
targetJvmVersion: "1.8"
|
||||
javaSupport: true
|
||||
name: jvmTarget
|
||||
testFramework: JUNIT4
|
||||
name: jvm
|
||||
+5
@@ -43,6 +43,11 @@ public class YamlBuildFileGenerationTestGenerated extends AbstractYamlBuildFileG
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTarget/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmTargetWithJava")
|
||||
public void testJvmTargetWithJava() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
|
||||
+3
-1
@@ -31,7 +31,9 @@ interface TargetConfigurationIR : MultiplatformIR, IrsOwner {
|
||||
}
|
||||
|
||||
fun TargetConfigurationIR.addWithJavaIntoJvmTarget() = when {
|
||||
this is DefaultTargetConfigurationIR && targetAccess.type == ModuleSubType.jvm ->
|
||||
this is DefaultTargetConfigurationIR
|
||||
&& targetAccess.type == ModuleSubType.jvm
|
||||
&& irs.none { it is GradleCallIr } ->
|
||||
withIrs(GradleCallIr("withJava"))
|
||||
else -> this
|
||||
}
|
||||
|
||||
+4
-2
@@ -36,7 +36,9 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
||||
override val text = "For Current System"
|
||||
|
||||
|
||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> {
|
||||
override fun ReadingContext.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> {
|
||||
val moduleName = module.name
|
||||
val variableName = "${moduleName}Target"
|
||||
|
||||
@@ -71,7 +73,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
||||
+NonDefaultTargetConfigurationIR(
|
||||
variableName = variableName,
|
||||
targetName = moduleName,
|
||||
irs = createInnerTargetIrs(module).toPersistentList()
|
||||
irs = createInnerTargetIrs(this@createTargetIrs, module).toPersistentList()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+43
-14
@@ -5,10 +5,12 @@ import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetAccessIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
@@ -22,7 +24,10 @@ interface TargetConfigurator : ModuleConfiguratorWithModuleType {
|
||||
fun canCoexistsWith(other: List<TargetConfigurator>): Boolean = true
|
||||
|
||||
fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR>
|
||||
fun ReadingContext.createInnerTargetIrs(module: Module): List<BuildSystemIR> = emptyList()
|
||||
fun createInnerTargetIrs(
|
||||
readingContext: ReadingContext,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = emptyList()
|
||||
}
|
||||
|
||||
abstract class TargetConfiguratorWithTests : ModuleConfiguratorWithTests, TargetConfigurator
|
||||
@@ -41,10 +46,12 @@ interface SimpleTargetConfigurator : TargetConfigurator {
|
||||
override val suggestedModuleName: String? get() = moduleSubType.name
|
||||
|
||||
|
||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
||||
override fun ReadingContext.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
+DefaultTargetConfigurationIR(
|
||||
module.createTargetAccessIr(moduleSubType),
|
||||
createInnerTargetIrs(module).toPersistentList()
|
||||
createInnerTargetIrs(this@createTargetIrs, module).toPersistentList()
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -65,7 +72,9 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
|
||||
|
||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
||||
|
||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
||||
override fun ReadingContext.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
+DefaultTargetConfigurationIR(
|
||||
module.createTargetAccessIr(ModuleSubType.js),
|
||||
buildPersistenceList {
|
||||
@@ -83,7 +92,9 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
|
||||
override val suggestedModuleName = "nodeJs"
|
||||
|
||||
|
||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
||||
override fun ReadingContext.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
+DefaultTargetConfigurationIR(
|
||||
module.createTargetAccessIr(ModuleSubType.js),
|
||||
buildPersistenceList {
|
||||
@@ -111,17 +122,35 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
||||
|
||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
||||
|
||||
override fun ReadingContext.createInnerTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
||||
val targetVersionValue = withSettingsOf(module) { JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value }
|
||||
when {
|
||||
buildSystemType.isGradle -> {
|
||||
+GradleSectionIR(
|
||||
"compilations.all",
|
||||
BodyIR(
|
||||
GradleAssignmentIR("kotlinOptions.jvmTarget", GradleStringConstIR(targetVersionValue))
|
||||
override fun createInnerTargetIrs(
|
||||
readingContext: ReadingContext,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
with(readingContext) {
|
||||
withSettingsOf(module) {
|
||||
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||
if (buildSystemType.isGradle) {
|
||||
+GradleSectionIR(
|
||||
"compilations.all",
|
||||
BodyIR(
|
||||
GradleAssignmentIR("kotlinOptions.jvmTarget", GradleStringConstIR(targetVersionValue))
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
if (Settings.javaSupport.reference.settingValue) {
|
||||
+GradleCallIr("withJava")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||
super.getConfiguratorSettings() +
|
||||
Settings.javaSupport
|
||||
|
||||
object Settings : ModuleConfiguratorSettings() {
|
||||
val javaSupport by booleanSetting("Java language support", GenerationPhase.PROJECT_GENERATION) {
|
||||
defaultValue = value(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user