首页 > 解决方案 > Gradle 7.1没有将maven工件发布到archiva

问题描述

我正在尝试使用 Gradle(7.1 版)将 maven 工件发布到 apache 档案。下面是 build.gradle.kts 文件中对此影响的节(注意:组和版本被指定为对 build.gradle.kts 文件中更高的版本变量的分配):

publishing {
    publications {
        create<MavenPublication>("federationManager") {
            artifactId = "federation-manager"
            from(components["java"])
        }
    }
    repositories {
        maven {
            name = "fedmanagerpublish"
            val internalRepoUrl = "http://cpswtng_archiva:8080/repository/internal"
            val snapshotsRepoUrl = "http://cpswtng_archiva:8080/repository/snapshots"
            url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else internalRepoUrl)

            logger.info("URL = \"$url\"")
            isAllowInsecureProtocol = true
            authentication {
                create<BasicAuthentication>("basic")
            }
            credentials {
                username = archivaUser
                password = archivaPassword
            }
        }
    }
}

不幸的是,这不起作用。当运行为:

./gradlew publishFederationManagerPublicationToFedmanagerpublishRepository

Gradle 给出以下错误:

Execution failed for task ':publishFederationManagerPublicationToFedmanagerpublishRepository'.
> Failed to publish publication 'federationManager' to repository 'fedmanagerpublish'
> Could not GET 'http:/repository/snapshots/org/cpswt/federation-manager/1.0-SNAPSHOT/maven-metadata.xml'.
> URI does not specify a valid host name: http:/repository/snapshots/org/cpswt/federation-manager/1.0-SNAPSHOT/maven-metadata.xml

奇怪的是,错误消息中报告的URI以maven repo URI开头,但没有主机名和端口,即“//cpswtng_archiva:8080”。也就是说,它出现了:

http://cpswtng_archiva:8080/repository/snapshots

正变成

http:/repository/snapshots

此外,它正在尝试执行GET,而它似乎应该只执行PUT

任何帮助表示赞赏:)

标签: mavengradlepublisharchiva

解决方案


推荐阅读