Maven-publish gradle插件会跳过该版本

时间:2017-05-23 13:00:01

标签: java maven gradle kotlin

我有使用kotlin-script配置的gradle多模块项目。我想将发布添加到maven存储库,我找到了maven-publish插件。但它似乎跳过了为每个项目配置的版本:

MyProject/build.gradle.kts

subprojects {
    apply {
        plugin("maven-publish")
    }
    configure<PublishingExtension>() {
        publications {
            repositories { ... }
            create<MavenPublication>("myPublication") {
                from(components.getByName("java"))
                logger.lifecycle("test: ${project.group} ${project.name} ${project.version}")
            }
        }

MyProject/subproject1/build.gradle.kts

version = "1.0.0-SNAPSHOT"

gradle publish输出:

test: my.project subproject1 unspecified
artifact file does not exist: '.../MyProject/subproject1/build/libs/subproject1.jar'

文件subproject1.jar不存在,但subproject1-1.0.0-SNAPSHOT.jar确实存在。如何让gradle获得正确版本的模块?

1 个答案:

答案 0 :(得分:0)

我在使用maven-publish插件时发现了类似的问题:

我试图根据gradle docs herethis answer中所述的项目版本来设置存储库URL

但是我发现version始终解析为默认值(未设置)(如问题中所示): unspecified

  

因此,我想这些文档示例仅用于项目的build.gradle,而不是常规的gradle脚本。

无论如何,我相信问题是由于gradle脚本中的块的执行时间引起的。无法在我想要的位置访问project.version。因此,我最终使用gradlew标志将参数传递给-Pparameter命令。

  

Gradle有一个configuration和一个execution阶段。

     

请参阅文档:

     

关于您的问题,可能与我描述的相同,或者原因可能更简单:

  • gradle文件的结构来看,它似乎与maven-publish documentation中指定的层次结构不匹配。特别是,repositories {}块应与publications {}处于同一级别,而不是在其内部。

可能相关: