override suspend fun run()

in sources/amper-cli/src/org/jetbrains/amper/tasks/custom/ResolveCustomExternalDependenciesTask.kt [49:97]


    override suspend fun run(
        dependenciesResult: List<TaskResult>,
        executionContext: TaskGraphExecutionContext,
    ): Result {
        val repositories = module.mavenRepositories.filter { it.resolve }.map { it.toRepository() }
        val drContext = Context {
            this.repositories = repositories
            this.cache = getAmperFileCacheBuilder(userCacheRoot)
            this.scope = resolutionScope
            this.platforms = setOf(ResolutionPlatform.JVM)
            this.jdkVersion = JavaVersion(module.jdkSettings.version)
        }
        val externalDependencyNodes = externalDependencies.map {
            // It's safe to split here, because, validation was already done in the frontend
            MavenDependencyNodeWithContext(drContext, it.toDrMavenCoordinates(), isBom = false)
        }
        val localDependencyNodes = localDependencies.map {
            it.buildDependenciesGraph(isTest = false, Platform.JVM, resolutionScope, userCacheRoot, incrementalCache)
        }

        val root = RootDependencyNodeWithContext(
            children = localDependencyNodes + externalDependencyNodes,
            templateContext = drContext,
        )

        val externalDependencies = root.getExternalDependencies()
        val dependencyPaths = incrementalCache.execute(
            key = taskName.name,
            inputValues = mapOf(
                "userCacheRoot" to userCacheRoot.path.pathString,
                "repositories" to repositories.joinToString("|"),
                "resolveScope" to resolutionScope.name,
                "dependencies" to externalDependencies.joinToString("|"),
            ),
            inputFiles = emptyList()
        ) {
            spanBuilder(taskName.name)
                .setAmperModule(module)
                .setListAttribute("dependencies-coordinates", externalDependencies.map { it.toString() })
                .use {
                    val resolvedGraph = mavenResolver.resolve(root, "custom external dependencies")
                    resolvedGraph.toIncrementalCacheResult()
                }
        }.outputFiles

        return Result(
            resolvedFiles = dependencyPaths,
        )
    }