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/");
|
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")
|
@TestMetadata("kotlinJvm")
|
||||||
public void testKotlinJvm() throws Exception {
|
public void testKotlinJvm() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
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/");
|
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")
|
@TestMetadata("kotlinJvm")
|
||||||
public void testKotlinJvm() throws Exception {
|
public void testKotlinJvm() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
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/");
|
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")
|
@TestMetadata("kotlinJvm")
|
||||||
public void testKotlinJvm() throws Exception {
|
public void testKotlinJvm() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
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/");
|
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")
|
@TestMetadata("kotlinJvm")
|
||||||
public void testKotlinJvm() throws Exception {
|
public void testKotlinJvm() throws Exception {
|
||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
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 {
|
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"))
|
withIrs(GradleCallIr("withJava"))
|
||||||
else -> this
|
else -> this
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -36,7 +36,9 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
|||||||
override val text = "For Current System"
|
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 moduleName = module.name
|
||||||
val variableName = "${moduleName}Target"
|
val variableName = "${moduleName}Target"
|
||||||
|
|
||||||
@@ -71,7 +73,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
|||||||
+NonDefaultTargetConfigurationIR(
|
+NonDefaultTargetConfigurationIR(
|
||||||
variableName = variableName,
|
variableName = variableName,
|
||||||
targetName = moduleName,
|
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.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList
|
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.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
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.DefaultTargetConfigurationIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetAccessIR
|
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.buildSystemType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||||
@@ -22,7 +24,10 @@ interface TargetConfigurator : ModuleConfiguratorWithModuleType {
|
|||||||
fun canCoexistsWith(other: List<TargetConfigurator>): Boolean = true
|
fun canCoexistsWith(other: List<TargetConfigurator>): Boolean = true
|
||||||
|
|
||||||
fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR>
|
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
|
abstract class TargetConfiguratorWithTests : ModuleConfiguratorWithTests, TargetConfigurator
|
||||||
@@ -41,10 +46,12 @@ interface SimpleTargetConfigurator : TargetConfigurator {
|
|||||||
override val suggestedModuleName: String? get() = moduleSubType.name
|
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(
|
+DefaultTargetConfigurationIR(
|
||||||
module.createTargetAccessIr(moduleSubType),
|
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 defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
||||||
|
|
||||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
override fun ReadingContext.createTargetIrs(
|
||||||
|
module: Module
|
||||||
|
): List<BuildSystemIR> = buildList {
|
||||||
+DefaultTargetConfigurationIR(
|
+DefaultTargetConfigurationIR(
|
||||||
module.createTargetAccessIr(ModuleSubType.js),
|
module.createTargetAccessIr(ModuleSubType.js),
|
||||||
buildPersistenceList {
|
buildPersistenceList {
|
||||||
@@ -83,7 +92,9 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
|
|||||||
override val suggestedModuleName = "nodeJs"
|
override val suggestedModuleName = "nodeJs"
|
||||||
|
|
||||||
|
|
||||||
override fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
override fun ReadingContext.createTargetIrs(
|
||||||
|
module: Module
|
||||||
|
): List<BuildSystemIR> = buildList {
|
||||||
+DefaultTargetConfigurationIR(
|
+DefaultTargetConfigurationIR(
|
||||||
module.createTargetAccessIr(ModuleSubType.js),
|
module.createTargetAccessIr(ModuleSubType.js),
|
||||||
buildPersistenceList {
|
buildPersistenceList {
|
||||||
@@ -111,17 +122,35 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
|||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
||||||
|
|
||||||
override fun ReadingContext.createInnerTargetIrs(module: Module): List<BuildSystemIR> = buildList {
|
override fun createInnerTargetIrs(
|
||||||
val targetVersionValue = withSettingsOf(module) { JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value }
|
readingContext: ReadingContext,
|
||||||
when {
|
module: Module
|
||||||
buildSystemType.isGradle -> {
|
): List<BuildSystemIR> = buildList {
|
||||||
+GradleSectionIR(
|
with(readingContext) {
|
||||||
"compilations.all",
|
withSettingsOf(module) {
|
||||||
BodyIR(
|
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||||
GradleAssignmentIR("kotlinOptions.jvmTarget", GradleStringConstIR(targetVersionValue))
|
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