refactor(extension): 将构件下载请求跟构件解析请求对齐.

防止在构件处理过程中因仓库原因出现问题, 因此统一两个请求所使用的仓库列表.
This commit is contained in:
LamGC 2022-07-16 20:55:24 +08:00
parent f79a4e4ff3
commit b6013e2fbe
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -257,23 +257,25 @@ internal class MavenRepositoryExtensionFinder(
} }
override fun findByArtifact(extensionArtifact: Artifact, extensionsPath: File): Set<FoundExtensionPackage> { override fun findByArtifact(extensionArtifact: Artifact, extensionsPath: File): Set<FoundExtensionPackage> {
val repositories = repositorySystem.newResolutionRepositories(repoSystemSession, remoteRepositories).toList()
log.debug { log.debug {
StringBuilder().apply { StringBuilder().apply {
append("构件 $extensionArtifact 将在以下仓库拉取: \n") append("构件 $extensionArtifact 将在以下仓库拉取: \n")
remoteRepositories.forEach { repositories.forEach {
append("\t- ${it}\n") append("\t- $it\n")
} }
} }
} }
val extensionArtifactResult = repositorySystem.resolveArtifact( val extensionArtifactResult = repositorySystem.resolveArtifact(
repoSystemSession, repoSystemSession,
ArtifactRequest( ArtifactRequest(
extensionArtifact, extensionArtifact,
repositorySystem.newResolutionRepositories(repoSystemSession, remoteRepositories), repositories,
null null
) )
) )
val extResolvedArtifact = extensionArtifactResult.artifact val resolvedArtifact: Artifact? = extensionArtifactResult.artifact
if (!extensionArtifactResult.isResolved) { if (!extensionArtifactResult.isResolved) {
if (extensionArtifactResult.isMissing) { if (extensionArtifactResult.isMissing) {
log.warn { "在指定的仓库中找不到构件: ${extensionArtifactResult.artifact}" } log.warn { "在指定的仓库中找不到构件: ${extensionArtifactResult.artifact}" }
@ -281,6 +283,9 @@ internal class MavenRepositoryExtensionFinder(
printArtifactResultExceptions(extensionArtifactResult.exceptions) printArtifactResultExceptions(extensionArtifactResult.exceptions)
} }
return emptySet() return emptySet()
} else if (resolvedArtifact == null) {
log.warn { "无法在指定的仓库中解析构件: $extensionArtifact" }
return emptySet()
} }
log.info { log.info {
@ -290,14 +295,14 @@ internal class MavenRepositoryExtensionFinder(
} }
val request = DependencyRequest( val request = DependencyRequest(
CollectRequest(Dependency(extResolvedArtifact, null), remoteRepositories), CollectRequest(Dependency(resolvedArtifact, null), repositories),
ScopeDependencyFilter(setOf("runtime", "compile", "provided"), null) ScopeDependencyFilter(setOf("runtime", "compile", "provided"), null)
) )
val dependencyResult = repositorySystem.resolveDependencies(repoSystemSession, request) val dependencyResult = repositorySystem.resolveDependencies(repoSystemSession, request)
val dependencies = checkAndCollectDependencyArtifacts(extensionArtifact, dependencyResult.artifactResults) val dependencies = checkAndCollectDependencyArtifacts(extensionArtifact, dependencyResult.artifactResults)
?: return emptySet() ?: return emptySet()
return setOf(MavenExtensionPackage(this, extResolvedArtifact, extensionArtifactResult.repository, dependencies)) return setOf(MavenExtensionPackage(this, resolvedArtifact, extensionArtifactResult.repository, dependencies))
} }
private fun checkAndCollectDependencyArtifacts( private fun checkAndCollectDependencyArtifacts(