【问题标题】:Maven-publish gradle plugin skips the versionmaven-publish gradle 插件跳过版本
【发布时间】:2017-05-23 13:00:01
【问题描述】:

我有使用 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 得到正确版本的模块?

【问题讨论】:

    标签: java maven gradle kotlin


    【解决方案1】:

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

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

    但我发现version 总是解析为(如问题中的)作为默认(未设置)值:unspecified

    所以我猜这些文档示例是针对项目的 build.gradle 而不是一般的 gradle 脚本。

    无论如何,我认为问题是由于gradle 脚本中的块的执行时间project.version 无法在我想要的地方访问。所以我最终使用-Pparameter 标志将参数传递给gradlew 命令。

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

    参考文档:

    关于你的问题,可能和我描述的一样,也可能原因更简单:

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

    可能相关:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 2021-03-31
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2021-10-02
      • 1970-01-01
      相关资源
      最近更新 更多