refactor: standardize Gradle project naming

This commit is contained in:
2023-09-26 06:33:46 +08:00
parent 87928e9af6
commit 2e298071d3
3 changed files with 25 additions and 24 deletions

View File

@@ -49,23 +49,23 @@ import org.gradle.plugin.use.PluginDependency
/**
* 获取指定项目的完整名称
* @param isUseColon 是否在子项目前使用冒号 - 默认是
* @return [String]
*/
internal val Project.fullName
get(): String {
val baseNames = mutableListOf<String>()
internal fun Project.fullName(isUseColon: Boolean = true): String {
val isRoot = this == rootProject
val baseNames = mutableListOf<String>()
/**
* 递归子项目
* @param project 当前项目
*/
fun fetchChild(project: Project) {
project.parent?.also { if (it != it.rootProject) fetchChild(it) }
baseNames.add(project.name)
}
fetchChild(project = this)
return buildString { baseNames.onEach { append(":$it") }.clear() }.drop(1)
}
/**
* 递归子项目
* @param project 当前项目
*/
fun fetchChild(project: Project) {
project.parent?.also { if (it != it.rootProject) fetchChild(it) }
baseNames.add(project.name)
}; fetchChild(project = this)
return buildString { baseNames.onEach { append(":$it") }.clear() }.let { if (isUseColon && isRoot.not()) it else it.drop(1) }
}
/**
* 向构建脚本添加自定义依赖

View File

@@ -75,13 +75,14 @@ internal object DependencyMigrationTemplateTransaction {
internal fun createTemplate() {
SLog.info("Starting analyze projects dependencies structure", SLog.ANLZE)
GradleHelper.allProjects.forEach { subProject ->
val projectName = subProject.fullName()
subProject.plugins().onEach {
if (exclusionPluginPrefixs.any { prefix -> it.id.startsWith(prefix) }) return@onEach
if (Dependencies.hasPlugin { key, _ -> key.current == it.id }) return@onEach
if (document.plugins == null) document.plugins = mutableMapOf()
val declareDocument = DependencyDocument(version = DependencyVersion.AUTOWIRE_VERSION_NAME)
document.plugins?.set(it.id, declareDocument)
}.apply { if (isNotEmpty()) SLog.info("Found $size plugins in project \"${subProject.fullName}\"", SLog.LINK) }
}.apply { if (isNotEmpty()) SLog.info("Found $size plugins in project \"$projectName\"", SLog.LINK) }
subProject.libraries().onEach {
if (Dependencies.hasLibrary { key, _ -> key.current == it.toString() }) return@onEach
if (document.libraries == null) document.libraries = mutableMapOf()
@@ -90,7 +91,7 @@ internal object DependencyMigrationTemplateTransaction {
val declareDocument = DependencyDocument(version = it.version.existed)
entities[it.groupId]?.set(it.artifactId, declareDocument)
}
}.apply { if (isNotEmpty()) SLog.info("Found $size libraries in project \"${subProject.fullName}\"", SLog.LINK) }
}.apply { if (isNotEmpty()) SLog.info("Found $size libraries in project \"$projectName\"", SLog.LINK) }
}; saveTemplateFile()
}

View File

@@ -152,24 +152,24 @@ internal object RuntimeDebugTransaction {
if (vfExclusionList.isNotEmpty()) versionFilterMap["exclusionList"] = mutableMapOf<String, Any>()
vfExclusionList.forEach { versionFilterMap["exclusionList"]?.addAsMap(it) }
GradleHelper.allProjects.forEach { subProject ->
projectPluginsMap[subProject.fullName] = mutableMapOf<String, Any>()
projectLibrariesMap[subProject.fullName] = mutableMapOf<String, Any>()
subProject.plugins().forEach { projectPluginsMap[subProject.fullName]?.addAsMap(it.id) }
projectPluginsMap[subProject.fullName()] = mutableMapOf<String, Any>()
projectLibrariesMap[subProject.fullName()] = mutableMapOf<String, Any>()
subProject.plugins().forEach { projectPluginsMap[subProject.fullName()]?.addAsMap(it.id) }
subProject.libraries().forEach {
val prefix = "(${it.configurationName})"
when (it.type) {
LibraryDependencyType.EXTERNAL, LibraryDependencyType.EXTERNAL_DELEGATE -> {
val suffix = it.version.deployed.noBlank()?.let { e -> ":$e" } ?: ""
projectLibrariesMap[subProject.fullName]?.addAsMap("$prefix ${it.groupId}:${it.artifactId}$suffix")
projectLibrariesMap[subProject.fullName()]?.addAsMap("$prefix ${it.groupId}:${it.artifactId}$suffix")
}
LibraryDependencyType.PROJECT -> projectLibrariesMap[subProject.fullName]?.addAsMap("$prefix (project) ${it.project?.fullName}")
LibraryDependencyType.PROJECT -> projectLibrariesMap[subProject.fullName()]?.addAsMap("$prefix (project) ${it.project?.fullName()}")
LibraryDependencyType.FILES -> {
val filesMap = mutableMapOf<String, String>()
it.files?.noEmpty()?.forEach { e -> filesMap.addAsMap(e.absolutePath) }?.also {
projectLibrariesMap[subProject.fullName] = mapOf("$prefix (files)" to filesMap)
} ?: projectLibrariesMap[subProject.fullName]?.addAsMap("$prefix (files) not found or empty folder")
projectLibrariesMap[subProject.fullName()] = mapOf("$prefix (files)" to filesMap)
} ?: projectLibrariesMap[subProject.fullName()]?.addAsMap("$prefix (files) not found or empty folder")
}
LibraryDependencyType.OTHERS -> projectLibrariesMap[subProject.fullName]?.addAsMap("$prefix unknown type dependency")
LibraryDependencyType.OTHERS -> projectLibrariesMap[subProject.fullName()]?.addAsMap("$prefix unknown type dependency")
}
}
}