如何从 gradle 插件存储库 (https://plugins.gradle.org/) 下载 .pom 文件?

问题描述 投票:0回答:1

我想在没有互联网连接的机器上构建一个带有几个 gradle 插件的项目。我有一个私有 Maven 存储库,其中包含该项目的所有依赖项,除了 gradle 插件的 .pom 文件。我如何从“plugins.gradle.org”获取它并发布到我的私人存储库?

gradle gradle-plugin maven-repository
1个回答
0
投票

此代码使用 Kotlin DSL,定义了一个任务

getThePoms
,该任务从添加到配置
pomConfiguration
1 并托管在 Gradle 插件门户的工件中获取 POM,并将它们复制到
build/poms

请注意,您需要在

dependencies
块中指定工件坐标,而不是 Gradle 插件 ID,它们是单独查找机制的一部分。

val pomConfigurationName = "pomConfiguration"

repositories {
    gradlePluginPortal()
}

val pomConfiguration = configurations.register(pomConfigurationName) {
    isTransitive = false // We only want the declared dependencies
}

dependencies {
    pomConfigurationName("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0")
    pomConfigurationName("org.jetbrains.kotlin:kotlin-serialization:2.0.0")
}

tasks.register<Copy>("getThePoms") {
    val componentIds = pomConfiguration.get().resolvedConfiguration.resolvedArtifacts.map { it.id.componentIdentifier }
    val artifactQueryResult = dependencies.createArtifactResolutionQuery()
        .forComponents(componentIds)
        .withArtifacts(MavenModule::class.java, MavenPomArtifact::class.java)
        .execute()
    val pomFiles = artifactQueryResult.resolvedComponents
        .flatMap { component -> component.getArtifacts(MavenPomArtifact::class) }
        .map { result -> (result as ResolvedArtifactResult).file }
    from(pomFiles)
    into(layout.buildDirectory.dir("poms"))
}

1 这里以 Kotlin Gradle 插件和 Kotlin 序列化插件为例。

© www.soinside.com 2019 - 2024. All rights reserved.