Wizard: add module dependencies to modules from jvm -> jvm dependencies
This commit is contained in:
+2
-5
@@ -11,10 +11,7 @@ import com.intellij.openapi.projectRoots.SimpleJavaSdkType
|
|||||||
import com.intellij.testFramework.IdeaTestUtil
|
import com.intellij.testFramework.IdeaTestUtil
|
||||||
import com.intellij.testFramework.PlatformTestCase
|
import com.intellij.testFramework.PlatformTestCase
|
||||||
import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.BuildSystem
|
import org.jetbrains.kotlin.tools.projectWizard.cli.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.TestWizardService
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.assertSuccess
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.isGradle
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.Services
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.Services
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
@@ -64,7 +61,7 @@ abstract class AbstractNewWizardProjectImportTest : PlatformTestCase() {
|
|||||||
private fun doTest(directoryPath: String, buildSystem: BuildSystem) {
|
private fun doTest(directoryPath: String, buildSystem: BuildSystem) {
|
||||||
val directory = Paths.get(directoryPath)
|
val directory = Paths.get(directoryPath)
|
||||||
|
|
||||||
val parameters = ProjectImportingTestParameters.fromTestDataOrDefault(directory)
|
val parameters = DefaultTestParameters.fromTestDataOrDefault(directory)
|
||||||
if (!parameters.runForMaven && buildSystem == BuildSystem.MAVEN) return
|
if (!parameters.runForMaven && buildSystem == BuildSystem.MAVEN) return
|
||||||
|
|
||||||
val tempDirectory = Files.createTempDirectory(null)
|
val tempDirectory = Files.createTempDirectory(null)
|
||||||
|
|||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.wizard
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.cli.TestParameters
|
|
||||||
import java.nio.file.Path
|
|
||||||
|
|
||||||
data class ProjectImportingTestParameters(val runForMaven: Boolean = false) : TestParameters {
|
|
||||||
companion object {
|
|
||||||
fun fromTestDataOrDefault(directory: Path): ProjectImportingTestParameters =
|
|
||||||
TestParameters.fromTestDataOrDefault(directory, PARAMETERS_FILE_NAME)
|
|
||||||
|
|
||||||
private const val PARAMETERS_FILE_NAME = "importParameters.txt"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+30
@@ -50,6 +50,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
|||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependency")
|
||||||
|
public void testJvmToJvmDependency() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||||
|
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||||
|
}
|
||||||
|
|
||||||
@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/");
|
||||||
@@ -108,6 +118,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
|||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependency")
|
||||||
|
public void testJvmToJvmDependency() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||||
|
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||||
|
}
|
||||||
|
|
||||||
@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/");
|
||||||
@@ -166,6 +186,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
|||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependency")
|
||||||
|
public void testJvmToJvmDependency() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||||
|
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||||
|
}
|
||||||
|
|
||||||
@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/");
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation project(':b')
|
||||||
|
implementation project(':c')
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.3.70"
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":b"))
|
||||||
|
implementation(project(":c"))
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>a</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>a</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>b</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>c</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation project(':c')
|
||||||
|
implementation project(':d')
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.3.70"
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":c"))
|
||||||
|
implementation(project(":d"))
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>b</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>b</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>c</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>d</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.3.70"
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>c</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>c</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation project(':a')
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.3.70"
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":a"))
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>d</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>d</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>a</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>testArtifactId</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>generatedProject</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<modules>
|
||||||
|
<module>a</module>
|
||||||
|
<module>b</module>
|
||||||
|
<module>c</module>
|
||||||
|
<module>d</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
rootProject.name = 'generatedProject'
|
||||||
|
|
||||||
|
|
||||||
|
include(':a')
|
||||||
|
include(':b')
|
||||||
|
include(':c')
|
||||||
|
include(':d')
|
||||||
|
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
rootProject.name = "generatedProject"
|
||||||
|
|
||||||
|
|
||||||
|
include(":a")
|
||||||
|
include(":b")
|
||||||
|
include(":c")
|
||||||
|
include(":d")
|
||||||
|
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
// runForMaven true
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
kotlin:
|
||||||
|
projectKind: Singleplatform
|
||||||
|
modules:
|
||||||
|
- type: JVM Module
|
||||||
|
name: a
|
||||||
|
dependencies:
|
||||||
|
- b
|
||||||
|
- c
|
||||||
|
- type: JVM Module
|
||||||
|
name: b
|
||||||
|
dependencies:
|
||||||
|
- c
|
||||||
|
- d
|
||||||
|
- type: JVM Module
|
||||||
|
name: c
|
||||||
|
- type: JVM Module
|
||||||
|
name: d
|
||||||
|
dependencies:
|
||||||
|
- a
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
rootProject
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
rootProject
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation project(':b')
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":b"))
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>c</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>c</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>b</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>b</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>b</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>a</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||||
|
}
|
||||||
|
group = 'testGroupId'
|
||||||
|
version = '1.0-SNAPSHOT'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||||
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||||
|
}
|
||||||
|
tasks.withType(KotlinCompile) {
|
||||||
|
kotlinOptions.jvmTarget = '1.8'
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm") version "1.3.70"
|
||||||
|
}
|
||||||
|
group = "testGroupId"
|
||||||
|
version = "1.0-SNAPSHOT"
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
testImplementation(kotlin("test-junit"))
|
||||||
|
implementation(kotlin("stdlib-jdk8"))
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile>() {
|
||||||
|
kotlinOptions.jvmTarget = "1.8"
|
||||||
|
}
|
||||||
+67
@@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>a</artifactId>
|
||||||
|
<groupId>testGroupId</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>a</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<kotlin.code.style>official</kotlin.code.style>
|
||||||
|
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mavenCentral</id>
|
||||||
|
<url>https://repo1.maven.org/maven2/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||||
|
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-maven-plugin</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>compile</id>
|
||||||
|
<phase>compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>test-compile</id>
|
||||||
|
<phase>test-compile</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test-compile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-test-junit</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jetbrains.kotlin</groupId>
|
||||||
|
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||||
|
<version>1.3.70</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
rootProject.name = 'generatedProject'
|
||||||
|
|
||||||
|
|
||||||
|
include(':b:c')
|
||||||
|
include(':b')
|
||||||
|
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
rootProject.name = "generatedProject"
|
||||||
|
|
||||||
|
|
||||||
|
include(":b:c")
|
||||||
|
include(":b")
|
||||||
|
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
// runForMaven true
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
kotlin:
|
||||||
|
projectKind: Singleplatform
|
||||||
|
modules:
|
||||||
|
- type: JVM Module
|
||||||
|
name: a
|
||||||
|
subModules:
|
||||||
|
- type: JVM Module
|
||||||
|
name: b
|
||||||
|
dependencies:
|
||||||
|
- a
|
||||||
|
subModules:
|
||||||
|
- type: JVM Module
|
||||||
|
name: c
|
||||||
|
dependencies:
|
||||||
|
- a.b
|
||||||
+11
-6
@@ -19,12 +19,17 @@ abstract class AbstractBuildFileGenerationTest : UsefulTestCase() {
|
|||||||
|
|
||||||
fun doTest(directoryPath: String) {
|
fun doTest(directoryPath: String) {
|
||||||
val directory = Paths.get(directoryPath)
|
val directory = Paths.get(directoryPath)
|
||||||
val expectedDirectory = expectedDirectory(directory)
|
|
||||||
|
|
||||||
for (buildSystem in BuildSystem.values()) {
|
val testParameters = DefaultTestParameters.fromTestDataOrDefault(directory)
|
||||||
if (Files.exists(expectedDirectory / buildSystem.buildFileName)) {
|
|
||||||
doTest(directory, buildSystem)
|
val buildSystemsToRunFor = listOfNotNull(
|
||||||
}
|
BuildSystem.GRADLE_KOTLIN_DSL,
|
||||||
|
BuildSystem.GRADLE_GROOVY_DSL,
|
||||||
|
if (testParameters.runForMaven) BuildSystem.MAVEN else null
|
||||||
|
)
|
||||||
|
|
||||||
|
for (buildSystem in buildSystemsToRunFor) {
|
||||||
|
doTest(directory, buildSystem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +41,7 @@ abstract class AbstractBuildFileGenerationTest : UsefulTestCase() {
|
|||||||
|
|
||||||
val expectedDirectory = expectedDirectory(directory)
|
val expectedDirectory = expectedDirectory(directory)
|
||||||
|
|
||||||
compareFiles(
|
compareFilesAndGenerateMissing(
|
||||||
expectedDirectory.allBuildFiles(buildSystem), expectedDirectory,
|
expectedDirectory.allBuildFiles(buildSystem), expectedDirectory,
|
||||||
tempDirectory.allBuildFiles(buildSystem), tempDirectory
|
tempDirectory.allBuildFiles(buildSystem), tempDirectory
|
||||||
)
|
)
|
||||||
|
|||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.tools.projectWizard.cli
|
||||||
|
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
data class DefaultTestParameters(val runForMaven: Boolean = false) : TestParameters {
|
||||||
|
companion object {
|
||||||
|
fun fromTestDataOrDefault(directory: Path): DefaultTestParameters =
|
||||||
|
TestParameters.fromTestDataOrDefault(directory, PARAMETERS_FILE_NAME)
|
||||||
|
|
||||||
|
private const val PARAMETERS_FILE_NAME = "parameters.txt"
|
||||||
|
}
|
||||||
|
}
|
||||||
+10
@@ -48,6 +48,16 @@ public class YamlBuildFileGenerationTestGenerated extends AbstractYamlBuildFileG
|
|||||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependency")
|
||||||
|
public void testJvmToJvmDependency() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||||
|
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||||
|
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||||
|
}
|
||||||
|
|
||||||
@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/");
|
||||||
|
|||||||
+14
-5
@@ -10,9 +10,11 @@ import org.hamcrest.core.Is
|
|||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.ExceptionError
|
import org.jetbrains.kotlin.tools.projectWizard.core.ExceptionError
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.core.div
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.onFailure
|
import org.jetbrains.kotlin.tools.projectWizard.core.onFailure
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||||
import org.junit.Assert.assertThat
|
import org.junit.Assert.assertThat
|
||||||
|
import org.junit.Assert.fail
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.util.stream.Collectors
|
import java.util.stream.Collectors
|
||||||
@@ -24,17 +26,24 @@ internal fun Path.listFiles(filter: (Path) -> Boolean) =
|
|||||||
Files.isRegularFile(path) && filter(path)
|
Files.isRegularFile(path) && filter(path)
|
||||||
}.collect(Collectors.toList()).sorted()
|
}.collect(Collectors.toList()).sorted()
|
||||||
|
|
||||||
internal fun compareFiles(
|
internal fun compareFilesAndGenerateMissing(
|
||||||
expectedFiles: List<Path>, expectedDir: Path,
|
expectedFiles: List<Path>, expectedDir: Path,
|
||||||
actualFiles: List<Path>, actualDir: Path
|
actualFiles: List<Path>, actualDir: Path
|
||||||
) {
|
) {
|
||||||
val expectedFilesSorted = expectedFiles.sorted()
|
val expectedFilesSorted = expectedFiles.sorted()
|
||||||
val actualFilesSorted = actualFiles.sorted()
|
val actualFilesSorted = actualFiles.sorted()
|
||||||
|
|
||||||
assertThat(
|
val missingFiles =
|
||||||
actualFilesSorted.map { actualDir.relativize(it) },
|
actualFiles.map(actualDir::relativize).toSet() - expectedFiles.map(expectedDir::relativize).toSet()
|
||||||
Is.`is`(expectedFilesSorted.map { expectedDir.relativize(it) })
|
|
||||||
)
|
if (missingFiles.isNotEmpty()) {
|
||||||
|
missingFiles.forEach { missingFile ->
|
||||||
|
val targetFile = expectedDir / missingFile
|
||||||
|
Files.createDirectories(targetFile.parent)
|
||||||
|
Files.copy(actualDir / missingFile, targetFile)
|
||||||
|
}
|
||||||
|
fail("The following files was missed: $missingFiles and thus was generated")
|
||||||
|
}
|
||||||
|
|
||||||
for ((actualFile, expectedFile) in actualFilesSorted zip expectedFilesSorted) {
|
for ((actualFile, expectedFile) in actualFilesSorted zip expectedFilesSorted) {
|
||||||
KotlinTestUtils.assertEqualsToFile(expectedFile.toFile(), actualFile.readFile())
|
KotlinTestUtils.assertEqualsToFile(expectedFile.toFile(), actualFile.readFile())
|
||||||
|
|||||||
+3
-1
@@ -23,7 +23,6 @@ fun <V> inValidatorContext(validator: Reader.(V) -> SettingValidator<V>) =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
object StringValidators {
|
object StringValidators {
|
||||||
fun shouldNotBeBlank(name: String) = settingValidator { value: String ->
|
fun shouldNotBeBlank(name: String) = settingValidator { value: String ->
|
||||||
if (value.isBlank()) ValidationResult.ValidationError("${name.capitalize()} should not be blank ")
|
if (value.isBlank()) ValidationResult.ValidationError("${name.capitalize()} should not be blank ")
|
||||||
@@ -69,6 +68,9 @@ sealed class ValidationResult {
|
|||||||
companion object {
|
companion object {
|
||||||
fun create(condition: Boolean, message: String) =
|
fun create(condition: Boolean, message: String) =
|
||||||
if (condition) OK else ValidationError(message)
|
if (condition) OK else ValidationError(message)
|
||||||
|
|
||||||
|
inline fun create(condition: Boolean, message: () -> String) =
|
||||||
|
if (condition) OK else ValidationError(message())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
|
|
||||||
abstract class Error {
|
abstract class Error {
|
||||||
abstract val message: String
|
abstract val message: String
|
||||||
@@ -55,4 +56,9 @@ data class ValidationError(val validationMessage: String) : Error() {
|
|||||||
get() = validationMessage.capitalize()
|
get() = validationMessage.capitalize()
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ProjectImportingError(override val message: String) : Error()
|
data class ProjectImportingError(override val message: String) : Error()
|
||||||
|
|
||||||
|
data class InvalidModuleDependencyError(val from: Module, val to: Module) : Error() {
|
||||||
|
override val message: String
|
||||||
|
get() = "Invalid module dependency from module ${from.name} to ${to.name}"
|
||||||
|
}
|
||||||
+5
-5
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.AndroidPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.AndroidPlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
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.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||||
@@ -49,7 +49,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
|||||||
|
|
||||||
override fun createBuildFileIRs(
|
override fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
) = buildList<BuildSystemIR> {
|
) = buildList<BuildSystemIR> {
|
||||||
+GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName)
|
+GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName)
|
||||||
@@ -73,7 +73,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
|||||||
|
|
||||||
override fun createModuleIRs(
|
override fun createModuleIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
buildList {
|
buildList {
|
||||||
@@ -85,7 +85,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? =
|
override fun createStdlibType(configurationData: ModulesToIrConversionData, module: Module): StdlibType? =
|
||||||
StdlibType.StdlibJdk7
|
StdlibType.StdlibJdk7
|
||||||
|
|
||||||
object FileTemplateDescriptors {
|
object FileTemplateDescriptors {
|
||||||
@@ -137,7 +137,7 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun Writer.runArbitraryTask(
|
override fun Writer.runArbitraryTask(
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module,
|
module: Module,
|
||||||
modulePath: Path
|
modulePath: Path
|
||||||
): TaskResult<Unit> = computeM {
|
): TaskResult<Unit> = computeM {
|
||||||
|
|||||||
+4
-4
@@ -5,7 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
@@ -27,7 +27,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
|||||||
|
|
||||||
override fun createBuildFileIRs(
|
override fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
) = buildList<BuildSystemIR> {
|
) = buildList<BuildSystemIR> {
|
||||||
+super<AndroidModuleConfigurator>.createBuildFileIRs(reader, configurationData, module)
|
+super<AndroidModuleConfigurator>.createBuildFileIRs(reader, configurationData, module)
|
||||||
@@ -47,7 +47,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
|||||||
|
|
||||||
override fun createModuleIRs(
|
override fun createModuleIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
) = buildList<BuildSystemIR> {
|
) = buildList<BuildSystemIR> {
|
||||||
+super<AndroidModuleConfigurator>.createModuleIRs(reader, configurationData, module)
|
+super<AndroidModuleConfigurator>.createModuleIRs(reader, configurationData, module)
|
||||||
@@ -66,7 +66,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun Writer.runArbitraryTask(
|
override fun Writer.runArbitraryTask(
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module,
|
module: Module,
|
||||||
modulePath: Path
|
modulePath: Path
|
||||||
): TaskResult<Unit> = computeM {
|
): TaskResult<Unit> = computeM {
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
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.ModuleKind
|
||||||
@@ -26,7 +26,7 @@ object IOSSinglePlatformModuleConfigurator :
|
|||||||
override val requiresRootBuildFile: Boolean = true
|
override val requiresRootBuildFile: Boolean = true
|
||||||
|
|
||||||
override fun Writer.runArbitraryTask(
|
override fun Writer.runArbitraryTask(
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module,
|
module: Module,
|
||||||
modulePath: Path
|
modulePath: Path
|
||||||
): TaskResult<Unit> {
|
): TaskResult<Unit> {
|
||||||
|
|||||||
+3
-3
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
|||||||
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.KotlinBuildSystemPluginIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
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.ModuleKind
|
||||||
@@ -30,7 +30,7 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
|||||||
|
|
||||||
override val canContainSubModules = false
|
override val canContainSubModules = false
|
||||||
|
|
||||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||||
KotlinBuildSystemPluginIR(
|
KotlinBuildSystemPluginIR(
|
||||||
KotlinBuildSystemPluginIR.Type.js,
|
KotlinBuildSystemPluginIR.Type.js,
|
||||||
version = configurationData.kotlinVersion
|
version = configurationData.kotlinVersion
|
||||||
@@ -38,7 +38,7 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
|||||||
|
|
||||||
override fun createBuildFileIRs(
|
override fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> = buildList {
|
): List<BuildSystemIR> = buildList {
|
||||||
+RawGradleIR {
|
+RawGradleIR {
|
||||||
|
|||||||
+7
-7
@@ -10,7 +10,7 @@ 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.KotlinBuildSystemPluginIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.correspondingStdlib
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.correspondingStdlib
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
@@ -206,27 +206,27 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
|||||||
|
|
||||||
fun createBuildFileIRs(
|
fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
emptyList()
|
emptyList()
|
||||||
|
|
||||||
fun createModuleIRs(
|
fun createModuleIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
emptyList()
|
emptyList()
|
||||||
|
|
||||||
fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? =
|
fun createStdlibType(configurationData: ModulesToIrConversionData, module: Module): StdlibType? =
|
||||||
safeAs<ModuleConfiguratorWithModuleType>()?.moduleType?.correspondingStdlib()
|
safeAs<ModuleConfiguratorWithModuleType>()?.moduleType?.correspondingStdlib()
|
||||||
|
|
||||||
fun createRootBuildFileIrs(configurationData: ModuleConfigurationData): List<BuildSystemIR> = emptyList()
|
fun createRootBuildFileIrs(configurationData: ModulesToIrConversionData): List<BuildSystemIR> = emptyList()
|
||||||
fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||||
null
|
null
|
||||||
|
|
||||||
fun Writer.runArbitraryTask(
|
fun Writer.runArbitraryTask(
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module,
|
module: Module,
|
||||||
modulePath: Path
|
modulePath: Path
|
||||||
): TaskResult<Unit> = UNIT_SUCCESS
|
): TaskResult<Unit> = UNIT_SUCCESS
|
||||||
|
|||||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
@@ -40,7 +40,7 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
|||||||
|
|
||||||
override fun createModuleIRs(
|
override fun createModuleIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
withSettingsOf(module) {
|
withSettingsOf(module) {
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleImpo
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR
|
||||||
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.kotlin.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
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.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||||
@@ -80,7 +80,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
|||||||
|
|
||||||
override fun createBuildFileIRs(
|
override fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> = buildList {
|
): List<BuildSystemIR> = buildList {
|
||||||
if (configurationData.buildSystemType == BuildSystemType.GradleGroovyDsl) {
|
if (configurationData.buildSystemType == BuildSystemType.GradleGroovyDsl) {
|
||||||
|
|||||||
+4
-4
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.MavenProper
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
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.ModuleConfigurationData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
@@ -59,7 +59,7 @@ object MppModuleConfigurator : ModuleConfigurator {
|
|||||||
override val text = "Multiplatform"
|
override val text = "Multiplatform"
|
||||||
override val canContainSubModules = true
|
override val canContainSubModules = true
|
||||||
|
|
||||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||||
KotlinBuildSystemPluginIR(
|
KotlinBuildSystemPluginIR(
|
||||||
KotlinBuildSystemPluginIR.Type.multiplatform,
|
KotlinBuildSystemPluginIR.Type.multiplatform,
|
||||||
version = configurationData.kotlinVersion
|
version = configurationData.kotlinVersion
|
||||||
@@ -83,7 +83,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
|||||||
|
|
||||||
override val canContainSubModules = true
|
override val canContainSubModules = true
|
||||||
|
|
||||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||||
KotlinBuildSystemPluginIR(
|
KotlinBuildSystemPluginIR(
|
||||||
KotlinBuildSystemPluginIR.Type.jvm,
|
KotlinBuildSystemPluginIR.Type.jvm,
|
||||||
version = configurationData.kotlinVersion
|
version = configurationData.kotlinVersion
|
||||||
@@ -92,7 +92,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
|||||||
|
|
||||||
override fun createBuildFileIRs(
|
override fun createBuildFileIRs(
|
||||||
reader: Reader,
|
reader: Reader,
|
||||||
configurationData: ModuleConfigurationData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
buildList {
|
buildList {
|
||||||
|
|||||||
+17
-1
@@ -4,6 +4,7 @@ import org.jetbrains.kotlin.tools.projectWizard.Versions
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.fold
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.fold
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||||
@@ -57,6 +58,8 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
)
|
)
|
||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validate(moduleDependenciesValidator)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -103,7 +106,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
private fun Writer.createBuildFiles(modules: List<Module>): TaskResult<List<BuildFileIR>> =
|
private fun Writer.createBuildFiles(modules: List<Module>): TaskResult<List<BuildFileIR>> =
|
||||||
with(
|
with(
|
||||||
ModulesToIRsConverter(
|
ModulesToIRsConverter(
|
||||||
ModuleConfigurationData(
|
ModulesToIrConversionData(
|
||||||
modules,
|
modules,
|
||||||
projectPath,
|
projectPath,
|
||||||
StructurePlugin::name.settingValue,
|
StructurePlugin::name.settingValue,
|
||||||
@@ -120,6 +123,19 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
// TODO update default versions
|
// TODO update default versions
|
||||||
private val DEFAULT_VERSION = Version.fromString("1.3.61")
|
private val DEFAULT_VERSION = Version.fromString("1.3.61")
|
||||||
|
|
||||||
|
private val moduleDependenciesValidator = settingValidator<List<Module>> { modules ->
|
||||||
|
val allModules = modules.withAllSubModules(includeSourcesets = true).toSet()
|
||||||
|
val allModulePaths = allModules.map(Module::path).toSet()
|
||||||
|
allModules.flatMap { module ->
|
||||||
|
module.dependencies.map { dependency ->
|
||||||
|
val isValidModule = when (dependency) {
|
||||||
|
is ModuleReference.ByPath -> dependency.path in allModulePaths
|
||||||
|
is ModuleReference.ByModule -> dependency.module in allModules
|
||||||
|
}
|
||||||
|
ValidationResult.create(isValidModule) { "Invalid module dependency $dependency of module ${module.path}" }
|
||||||
|
}
|
||||||
|
}.fold()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+25
-37
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
data class ModuleConfigurationData(
|
data class ModulesToIrConversionData(
|
||||||
val rootModules: List<Module>,
|
val rootModules: List<Module>,
|
||||||
val projectPath: Path,
|
val projectPath: Path,
|
||||||
val projectName: String,
|
val projectName: String,
|
||||||
@@ -24,6 +24,9 @@ data class ModuleConfigurationData(
|
|||||||
val writer: Writer
|
val writer: Writer
|
||||||
) {
|
) {
|
||||||
val allModules = rootModules.withAllSubModules()
|
val allModules = rootModules.withAllSubModules()
|
||||||
|
val isSingleRootModuleMode = rootModules.size == 1
|
||||||
|
|
||||||
|
val moduleByPath = rootModules.withAllSubModules(includeSourcesets = true).associateBy(Module::path)
|
||||||
}
|
}
|
||||||
|
|
||||||
private data class ModulesToIrsState(
|
private data class ModulesToIrsState(
|
||||||
@@ -38,9 +41,8 @@ private fun ModulesToIrsState.stateForSubModule(currentModulePath: Path) =
|
|||||||
)
|
)
|
||||||
|
|
||||||
class ModulesToIRsConverter(
|
class ModulesToIRsConverter(
|
||||||
val data: ModuleConfigurationData
|
val data: ModulesToIrConversionData
|
||||||
) {
|
) {
|
||||||
private val isSingleRootModuleMode = data.rootModules.size == 1
|
|
||||||
|
|
||||||
// TODO get rid of mutable state
|
// TODO get rid of mutable state
|
||||||
private val rootBuildFileIrs = mutableListOf<BuildSystemIR>()
|
private val rootBuildFileIrs = mutableListOf<BuildSystemIR>()
|
||||||
@@ -53,7 +55,7 @@ class ModulesToIRsConverter(
|
|||||||
if ( // We want to have root build file for android or ios projects
|
if ( // We want to have root build file for android or ios projects
|
||||||
data.allModules.any { it.configurator.requiresRootBuildFile }
|
data.allModules.any { it.configurator.requiresRootBuildFile }
|
||||||
) return false
|
) return false
|
||||||
return isSingleRootModuleMode
|
return data.isSingleRootModuleMode
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun calculatePathForModule(module: Module, rootPath: Path) = when {
|
private fun calculatePathForModule(module: Module, rootPath: Path) = when {
|
||||||
@@ -99,22 +101,26 @@ class ModulesToIRsConverter(
|
|||||||
module: Module,
|
module: Module,
|
||||||
configurator: SinglePlatformModuleConfigurator,
|
configurator: SinglePlatformModuleConfigurator,
|
||||||
state: ModulesToIrsState
|
state: ModulesToIrsState
|
||||||
): TaskResult<List<BuildFileIR>> = with(data) {
|
): TaskResult<List<BuildFileIR>> = computeM {
|
||||||
val modulePath = calculatePathForModule(module, state.parentPath)
|
val modulePath = calculatePathForModule(module, state.parentPath)
|
||||||
writer.mutateProjectStructureByModuleConfigurator(module, modulePath)
|
val (moduleDependencies) = module.dependencies.mapCompute { dependency ->
|
||||||
|
val to = data.moduleByPath.getValue(dependency.path)
|
||||||
|
val (dependencyType) = ModuleDependencyType.getPossibleDependencyType(module, to)
|
||||||
|
.toResult { InvalidModuleDependencyError(module, to) }
|
||||||
|
dependencyType.createDependencyIrs(module, to, data)
|
||||||
|
}.sequence()
|
||||||
|
data.writer.mutateProjectStructureByModuleConfigurator(module, modulePath)
|
||||||
val buildFileIR = run {
|
val buildFileIR = run {
|
||||||
if (!configurator.needCreateBuildFile) return@run null
|
if (!configurator.needCreateBuildFile) return@run null
|
||||||
val dependenciesIRs = buildPersistenceList<BuildSystemIR> {
|
val dependenciesIRs = buildPersistenceList<BuildSystemIR> {
|
||||||
+module.sourcesets.flatMap { sourceset ->
|
+moduleDependencies
|
||||||
sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }
|
|
||||||
}
|
|
||||||
with(configurator) { +createModuleIRs(this@createSinglePlatformModule, data, module) }
|
with(configurator) { +createModuleIRs(this@createSinglePlatformModule, data, module) }
|
||||||
addIfNotNull(
|
addIfNotNull(
|
||||||
configurator.createStdlibType(data, module)?.let { stdlibType ->
|
configurator.createStdlibType(data, module)?.let { stdlibType ->
|
||||||
KotlinStdlibDependencyIR(
|
KotlinStdlibDependencyIR(
|
||||||
type = stdlibType,
|
type = stdlibType,
|
||||||
isInMppModule = false,
|
isInMppModule = false,
|
||||||
version = kotlinVersion,
|
version = data.kotlinVersion,
|
||||||
dependencyType = DependencyType.MAIN
|
dependencyType = DependencyType.MAIN
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -122,7 +128,7 @@ class ModulesToIRsConverter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val moduleIr = SingleplatformModuleIR(
|
val moduleIr = SingleplatformModuleIR(
|
||||||
if (modulePath == projectPath) projectName else module.name,
|
if (modulePath == data.projectPath) data.projectName else module.name,
|
||||||
modulePath,
|
modulePath,
|
||||||
dependenciesIRs,
|
dependenciesIRs,
|
||||||
module.template,
|
module.template,
|
||||||
@@ -131,7 +137,7 @@ class ModulesToIRsConverter(
|
|||||||
SingleplatformSourcesetIR(
|
SingleplatformSourcesetIR(
|
||||||
sourceset.sourcesetType,
|
sourceset.sourcesetType,
|
||||||
modulePath / Defaults.SRC_DIR / sourceset.sourcesetType.name,
|
modulePath / Defaults.SRC_DIR / sourceset.sourcesetType.name,
|
||||||
sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }.toPersistentList(),
|
persistentListOf(),
|
||||||
sourceset
|
sourceset
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -143,17 +149,17 @@ class ModulesToIRsConverter(
|
|||||||
moduleIr,
|
moduleIr,
|
||||||
persistentListOf()
|
persistentListOf()
|
||||||
),
|
),
|
||||||
pomIr.copy(artifactId = module.name),
|
data.pomIr.copy(artifactId = module.name),
|
||||||
createBuildFileIRs(module, state)
|
createBuildFileIRs(module, state)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return module.subModules.mapSequence { subModule ->
|
module.subModules.mapSequence { subModule ->
|
||||||
createBuildFileForModule(
|
createBuildFileForModule(
|
||||||
subModule,
|
subModule,
|
||||||
state.stateForSubModule(modulePath)
|
state.stateForSubModule(modulePath)
|
||||||
)
|
)
|
||||||
}.map { it.flatten() }
|
}.map { it.flatten() }
|
||||||
.map { children ->
|
.map { children ->
|
||||||
buildFileIR?.let { children + it } ?: children
|
buildFileIR?.let { children + it } ?: children
|
||||||
}
|
}
|
||||||
@@ -194,7 +200,6 @@ class ModulesToIRsConverter(
|
|||||||
val sourcesetss = target.sourcesets.map { sourceset ->
|
val sourcesetss = target.sourcesets.map { sourceset ->
|
||||||
val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize()
|
val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize()
|
||||||
val sourcesetIrs = buildList<BuildSystemIR> {
|
val sourcesetIrs = buildList<BuildSystemIR> {
|
||||||
+sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }
|
|
||||||
if (sourceset.sourcesetType == SourcesetType.main) {
|
if (sourceset.sourcesetType == SourcesetType.main) {
|
||||||
addIfNotNull(
|
addIfNotNull(
|
||||||
target.configurator.createStdlibType(data, target)?.let { stdlibType ->
|
target.configurator.createStdlibType(data, target)?.let { stdlibType ->
|
||||||
@@ -257,21 +262,4 @@ class ModulesToIRsConverter(
|
|||||||
addIfNotNull(kotlinPlugin)
|
addIfNotNull(kotlinPlugin)
|
||||||
+with(module.configurator) { createBuildFileIRs(this@createBuildFileIRs, data, module) }
|
+with(module.configurator) { createBuildFileIRs(this@createBuildFileIRs, data, module) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun SourcesetDependency.toIR(type: DependencyType): DependencyIR = with(data) {
|
|
||||||
val path = when (this@toIR) {
|
|
||||||
is ModuleBasedSourcesetDependency -> module.path
|
|
||||||
is PathBasedSourcesetDependency -> path
|
|
||||||
}
|
|
||||||
val modulePomIr = when (this@toIR) {
|
|
||||||
is ModuleBasedSourcesetDependency -> pomIr.copy(artifactId = module.name)
|
|
||||||
is PathBasedSourcesetDependency -> pomIr.copy(artifactId = path.parts.last())
|
|
||||||
}
|
|
||||||
return when {
|
|
||||||
isSingleRootModuleMode
|
|
||||||
&& path.parts.singleOrNull() == rootModules.single().name
|
|
||||||
&& buildSystemType.isGradle -> GradleRootProjectDependencyIR(type)
|
|
||||||
else -> ModuleDependencyIR(path, modulePomIr, type)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+13
-1
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||||
|
|
||||||
|
import kotlinx.collections.immutable.PersistentList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator
|
import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner
|
import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner
|
||||||
@@ -33,6 +34,7 @@ class Module(
|
|||||||
var template: Template?,
|
var template: Template?,
|
||||||
val sourcesets: List<Sourceset>,
|
val sourcesets: List<Sourceset>,
|
||||||
subModules: List<Module>,
|
subModules: List<Module>,
|
||||||
|
val dependencies: MutableList<ModuleReference> = mutableListOf(),
|
||||||
var parent: Module? = null,
|
var parent: Module? = null,
|
||||||
override val identificator: Identificator = GeneratedIdentificator(name)
|
override val identificator: Identificator = GeneratedIdentificator(name)
|
||||||
) : DisplayableSettingItem, Validatable<Module>, IdentificatorOwner {
|
) : DisplayableSettingItem, Validatable<Module>, IdentificatorOwner {
|
||||||
@@ -86,7 +88,16 @@ class Module(
|
|||||||
}.nullableValue()
|
}.nullableValue()
|
||||||
val sourcesets = listOf(Sourceset(SourcesetType.main), Sourceset(SourcesetType.test))
|
val sourcesets = listOf(Sourceset(SourcesetType.main), Sourceset(SourcesetType.test))
|
||||||
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
|
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
|
||||||
Module(name, configurator, template, sourcesets, submodules, identificator = identificator)
|
val (dependencies) = map.parseValue(this, path, "dependencies", listParser(ModuleReference.ByPath.parser)) { emptyList() }
|
||||||
|
Module(
|
||||||
|
name,
|
||||||
|
configurator,
|
||||||
|
template,
|
||||||
|
sourcesets,
|
||||||
|
submodules,
|
||||||
|
dependencies = dependencies.toMutableList(),
|
||||||
|
identificator = identificator
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val moduleNameValidator = settingValidator<Module> { module ->
|
private val moduleNameValidator = settingValidator<Module> { module ->
|
||||||
@@ -138,6 +149,7 @@ val Module.path
|
|||||||
.asReversed()
|
.asReversed()
|
||||||
.let(::ModulePath)
|
.let(::ModulePath)
|
||||||
|
|
||||||
|
|
||||||
val Sourceset.path
|
val Sourceset.path
|
||||||
get() = ModulePath(parent?.path?.parts.orEmpty() + sourcesetType.name)
|
get() = ModulePath(parent?.path?.parts.orEmpty() + sourcesetType.name)
|
||||||
|
|
||||||
|
|||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.GradleRootProjectDependencyIR
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleDependencyIR
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JvmSinglePlatformModuleConfigurator
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
sealed class ModuleDependencyType(
|
||||||
|
val from: KClass<out ModuleConfigurator>,
|
||||||
|
val to: KClass<out ModuleConfigurator>
|
||||||
|
) {
|
||||||
|
fun accepts(from: Module, to: Module) =
|
||||||
|
this.from.isInstance(from.configurator) && this.to.isInstance(to.configurator)
|
||||||
|
|
||||||
|
open fun createDependencyIrs(from: Module, to: Module, data: ModulesToIrConversionData): BuildSystemIR {
|
||||||
|
val path = to.path
|
||||||
|
val modulePomIr = data.pomIr.copy(artifactId = to.name)
|
||||||
|
return when {
|
||||||
|
data.isSingleRootModuleMode
|
||||||
|
&& to.path.parts.singleOrNull() == data.rootModules.single().name
|
||||||
|
&& data.buildSystemType.isGradle -> GradleRootProjectDependencyIR(DependencyType.MAIN)
|
||||||
|
else -> ModuleDependencyIR(
|
||||||
|
path.considerSingleRootModuleMode(data.isSingleRootModuleMode),
|
||||||
|
modulePomIr,
|
||||||
|
DependencyType.MAIN
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
object JVMSinglePlatformToJVMSinglePlatform : ModuleDependencyType(
|
||||||
|
from = JvmSinglePlatformModuleConfigurator::class,
|
||||||
|
to = JvmSinglePlatformModuleConfigurator::class
|
||||||
|
)
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val ALL = listOf(
|
||||||
|
JVMSinglePlatformToJVMSinglePlatform
|
||||||
|
)
|
||||||
|
|
||||||
|
fun getPossibleDependencyType(from: Module, to: Module): ModuleDependencyType? =
|
||||||
|
ALL.firstOrNull { it.accepts(from, to) }
|
||||||
|
}
|
||||||
|
}
|
||||||
+29
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.core.parse
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.core.valueParser
|
||||||
|
|
||||||
|
sealed class ModuleReference {
|
||||||
|
abstract val path: ModulePath
|
||||||
|
|
||||||
|
data class ByPath(override val path: ModulePath) : ModuleReference() {
|
||||||
|
companion object {
|
||||||
|
val parser = valueParser { value, path ->
|
||||||
|
val (modulePath) = ModulePath.parser.parse(this, value, path)
|
||||||
|
ByPath(modulePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String = path.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
data class ByModule(val module: Module) : ModuleReference() {
|
||||||
|
override val path: ModulePath get() = module.path
|
||||||
|
override fun toString(): String = module.name
|
||||||
|
}
|
||||||
|
}
|
||||||
+15
-1
@@ -11,8 +11,22 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemP
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
|
|
||||||
inline class ModulePath(val parts: List<String>) {
|
inline class ModulePath(val parts: List<String>) {
|
||||||
|
constructor(path: String) : this(path.trim().split('.'))
|
||||||
|
|
||||||
fun asString(separator: String = ".") = parts.joinToString(separator)
|
fun asString(separator: String = ".") = parts.joinToString(separator)
|
||||||
override fun toString(): String = asString()
|
override fun toString(): String = asString()
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val parser = valueParser { value, path ->
|
||||||
|
val (stringPath) = value.parseAs<String>(path)
|
||||||
|
ModulePath(stringPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun ModulePath.considerSingleRootModuleMode(isSingleRootMode: Boolean) = when {
|
||||||
|
isSingleRootMode && parts.size > 1 -> ModulePath(parts.subList(1, parts.size))
|
||||||
|
else -> this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -55,7 +69,7 @@ class Sourceset(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("EnumEntryName")
|
@Suppress("EnumEntryName")
|
||||||
enum class SourcesetType: DisplayableSettingItem {
|
enum class SourcesetType : DisplayableSettingItem {
|
||||||
main, test;
|
main, test;
|
||||||
|
|
||||||
override val text: String
|
override val text: String
|
||||||
|
|||||||
Reference in New Issue
Block a user