【问题标题】:NullPointerException when publishing a Grails 3 plugin发布 Grails 3 插件时出现 NullPointerException
【发布时间】:2015-07-31 20:35:48
【问题描述】:

我正在尝试按照this guide 中的步骤将this Grails 3 插件发布到Bintray。最后一步是运行

gradle bintrayUpload

在项目根目录的命令行上。当我这样做时,我收到以下错误消息

FAILURE: Build failed with an exception.

* What went wrong:
java.lang.NullPointerException (no error message)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
java.lang.NullPointerException
    at org.gradle.api.internal.tasks.DefaultTaskDependency.add(DefaultTaskDependency.java:109)
    at org.gradle.api.internal.AbstractTask$11.run(AbstractTask.java:327)
    at org.gradle.api.internal.tasks.TaskMutator.mutate(TaskMutator.java:37)
    at org.gradle.api.internal.AbstractTask.dependsOn(AbstractTask.java:325)
    at com.jfrog.bintray.gradle.BintrayPlugin$_apply_closure2_closure5.doCall(BintrayPlugin.groovy:96)
    at com.jfrog.bintray.gradle.BintrayPlugin$_apply_closure2.doCall(BintrayPlugin.groovy:88)

关于问题原因的任何想法?

更新

根据以下建议,我在build.gradle 中进行了以下更改

  • 将 bintray 插件更新到 1.2 版
  • group "org.grails.plugins" 更改为group "domurtag.plugins"

FAILURE:构建失败并出现异常。

  • 出了什么问题:任务“:bintrayUpload”执行失败。

    无法创建包“grails/plugins/org.grails.plugins:grails-simple-captcha”:HTTP/1.1 403 禁止 [message:forbidden]

我已经添加了这些环境变量

BINTRAY_USER=domurtag
BINTRAY_KEY=my_api_key

错误消息表明 403 的原因是因为正在尝试将插件发布到 grails/plugins 存储库(我无权访问),但我不知道这是为什么发生了什么?

【问题讨论】:

  • 您可以检查/比较您的设置与我的project setup
  • 如果您仍然卡在 message:forbidden 问题,请尝试在 bintray 手动创建包。在此之后尝试使用 bintrayUpload 任务上传您的工件。
  • @StefanFreitag 当我运行grails package-plugin 时,我应该上传生成的.tar 还是.zip
  • 嗨 Dónal,我对 Grails 不太熟悉...:(

标签: grails


【解决方案1】:

我在 Gradle 构建中看到了完全相同的堆栈跟踪。我的 Gradle 构建脚本使用了 com.jfrog.bintray 1.1 版。升级到 1.2 版后,构建成功运行。

【讨论】:

    【解决方案2】:

    错误

    Could not create package 'grails/plugins/org.grails.plugins:grails-simple-captcha': HTTP/1.1 403 Forbidden [message:forbidden]
    

    是因为您尝试发布到您无权发布到的 grails/plugins 存储库。您必须修改 build.gradle bintray 配置才能发布到您自己的存储库。示例:

    version "0.1"
    group "benorama.plugins"
    bintray {
      pkg {
        userOrg = '' // If you want to publish to an organization
        name = "benorama.plugins:$project.name"
        issueTrackerUrl = "https://github.com/benorama/grails-$project.name/issues"
        vcsUrl = “https://github.com/benorama/grails-$project.name"
        version {
          attributes = ['grails-plugin': "benorama.plugins:$project.name"]
          name = project.version
        }
      }
    }
    

    发布到您自己的存储库后,您可以请求将您的插件包含在grails/plugins

    请参阅本教程以获得良好的指导:https://medium.com/@benorama/how-to-publish-your-grails-3-plugin-to-bintray-c341b24f567d

    【讨论】:

    • build.gradle 中,我将group "org.grails.plugins" 更改为group "domurtag.plugins",但运行gradle bintrayUpload 时仍然出现403 错误
    【解决方案3】:

    您的问题出在 build.gradle 中的 bintray 配置中。 默认情况下,Bintray Gradle 插件配置有外部文件:

    // Used for publishing to central repository, remove if not needed
    apply from: 'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle'
    apply from: 'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle'
    

    所以你必须通过在之后放置你的配置来覆盖这个配置,例如:

    // Used for publishing to central repository, remove if not needed
    apply from: 'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/grailsCentralPublishing.gradle'
    apply from: 'https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle'
    
    version '0.1'
    group 'org.grails.plugins'
    
    bintray {
        pkg {
            userOrg = '<your bintray username>'
            repo = 'plugins'
            name = "org.grails.plugins:$project.name"
            desc = "Grails $project.name plugin"
            websiteUrl = "http://grails.org/plugin/$project.name"
            issueTrackerUrl = "https://github.com/<username>/grails-$project.name/issues"
            vcsUrl = "https://github.com/<username>/grails-$project.name"
            licenses = ['Apache-2.0']
            version {
                attributes = ['grails-plugin': "org.grails.plugins:$project.name"]
                name = project.version
            }
        }
    }
    

    在您的情况下,userOrg 的值未设置(使用 userOrg grails),因此您不允许上传到https://bintray.com/grails/plugins/...

    此外,您可以查看https://raw.githubusercontent.com/grails/grails-profile-repository/master/profiles/plugin/templates/bintrayPublishing.gradle 以查看完整的 bintray 配置。

    【讨论】:

      猜你喜欢
      • 2012-04-19
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2017-09-01
      相关资源
      最近更新 更多