diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml
index e35235005f5..6f189cee6be 100644
--- a/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml
+++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/pom.xml
@@ -16,6 +16,13 @@
official
+
+
+ mavenCentral
+ https://repo1.maven.org/maven2/
+
+
+
src/main/kotlin
src/test/kotlin
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt
index 06b27afd89a..d5068d52782 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildFileIR.kt
@@ -27,6 +27,13 @@ data class BuildFileIR(
fun withModulesUpdated(updater: (ModuleIR) -> TaskResult): TaskResult =
modules.withModulesUpdated(updater).map { newModules -> copy(modules = newModules) }
+ private fun distinctRepositories(): List =
+ irsOfType()
+ .distinctBy { it.repository }
+ .sortedBy { repositoryIR ->
+ if (repositoryIR.repository is DefaultRepository) 0 else 1
+ }
+
override fun BuildFilePrinter.render() = when (this) {
is GradlePrinter -> {
irsOfTypeOrNull()?.let { imports ->
@@ -44,13 +51,7 @@ data class BuildFileIR(
sectionCall("plugins", irsOfType()); nlIndented()
pom.render(this); nl()
- irsOfType()
- .distinctBy { it.repository }
- .sortedBy { repositoryIR ->
- if (repositoryIR.repository is DefaultRepository) 0 else 1
- }.let {
- sectionCall("repositories", it)
- }
+ sectionCall("repositories", distinctRepositories())
nl()
modules.render(this)
irsOfTypeOrNull()?.let { freeIrs ->
@@ -71,6 +72,13 @@ data class BuildFileIR(
singleLineNode("kotlin.code.style") { +"official" }
}
+ distinctRepositories().takeIf { it.isNotEmpty() }?.let { repositories ->
+ nl()
+ node("repositories") {
+ repositories.listNl()
+ }
+ }
+
val plugins = irsOfType().takeIf { it.isNotEmpty() }
if (plugins != null) {
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt
index ddb501e5218..49d6cccb819 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/RepositoryIR.kt
@@ -2,6 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
+import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.CustomMavenRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
@@ -10,7 +11,7 @@ data class RepositoryIR(val repository: Repository) : BuildSystemIR {
override fun BuildFilePrinter.render() = when (this) {
is GradlePrinter -> when (repository) {
is DefaultRepository -> {
- +repository.type.asGradleName()
+ +repository.type.gradleName
+"()"
}
is CustomMavenRepository -> {
@@ -26,15 +27,12 @@ data class RepositoryIR(val repository: Repository) : BuildSystemIR {
}
else -> Unit
}
+ is MavenPrinter -> {
+ node("repository") {
+ singleLineNode("id") { +repository.idForMaven }
+ singleLineNode("url") { +repository.url }
+ }
+ }
else -> Unit
}
-
- companion object {
- private fun DefaultRepository.Type.asGradleName() = when (this) {
- DefaultRepository.Type.JCENTER -> "jcenter"
- DefaultRepository.Type.MAVEN_CENTRAL -> "mavenCentral"
- DefaultRepository.Type.GOOGLE -> "google"
- DefaultRepository.Type.GRADLE_PLUGIN_PORTAL -> "gradlePluginPortal"
- }
- }
}
diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
index 973cc3209c2..adbc63afe07 100644
--- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
+++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Repository.kt
@@ -1,10 +1,22 @@
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
-interface Repository
+interface Repository {
+ val url: String
+ val idForMaven: String
+}
data class DefaultRepository(val type: Type) : Repository {
- enum class Type {
- JCENTER, MAVEN_CENTRAL, GOOGLE, GRADLE_PLUGIN_PORTAL
+ override val url: String
+ get() = type.url
+
+ override val idForMaven: String
+ get() = type.gradleName
+
+ enum class Type(val gradleName: String, val url: String) {
+ JCENTER("jcenter", "https://jcenter.bintray.com/"),
+ MAVEN_CENTRAL("mavenCentral", "https://repo1.maven.org/maven2/"),
+ GOOGLE("google", "https://dl.google.com/dl/android/maven2/"),
+ GRADLE_PLUGIN_PORTAL("gradlePluginPortal", "https://plugins.gradle.org/m2/")
}
companion object {
@@ -16,12 +28,13 @@ data class DefaultRepository(val type: Type) : Repository {
}
-interface CustomMavenRepository : Repository {
- val url: String
-}
+interface CustomMavenRepository : Repository
data class BintrayRepository(val repository: String) : CustomMavenRepository {
override val url: String = "https://dl.bintray.com/$repository"
+
+ override val idForMaven: String
+ get() = "bintray." + repository.replace('/', '.')
}
object Repositories {