当前位置: 首页 > 知识库问答 >
问题:

如何使用自定义发布方案用maven-publish发布自定义gradle插件?

马业
2023-03-14

我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用MavenPublication插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复制它。

事实证明,只有当我添加一个名为pluginmaven的发布时,发布才能正常工作,因此我的配置必须如下所示:

task sourcesJar(type: Jar, dependsOn: classes) {
    archiveClassifier = 'sources'
    from sourceSets.main.allSource
}

publishing {
    publications {
        pluginMaven(MavenPublication) {
            groupId = 'com.magicbluepenguin'
            artifactId = 'mbpplugin'
            version = '1.0.0'
            artifact sourcesJar
        }
    }
}

它将以下2个任务添加到我的项目中:

task sourcesJar(type: Jar, dependsOn: classes) {
    archiveClassifier = 'sources'
    from sourceSets.main.allSource
}

publishing {
    publications {
        pluginMavenDevelop(MavenPublication) {
            groupId = 'com.magicbluepenguin'
            artifactId = 'mbpplugin'
            version = '1.0.0'
            artifact sourcesJar
        }
    }
}

当然这也有问题:

>

  • 调用“default”任务现在失败,因为它的artifactiD、version`等尚未定义。

    调用自定义任务成功,但尝试从客户端应用程序使用插件失败,出现id为'mbppplugin'not found的插件错误。

    不知何故,我现在需要能够为开发、登台和生产定义自定义出版物,但我真的不知道如何处理这个问题,也没有找到关于如何做到这一点的任何文档。


  • 共有1个答案

    孙书
    2023-03-14

    通过使用适当的参数找到了解决方法。我的任务现在看起来如下:

    task sourcesJar(type: Jar, dependsOn: classes) {
        archiveClassifier = 'sources'
        from sourceSets.main.allSource
    }
    
    publishing {
        publications {
            pluginMaven(MavenPublication) {
                groupId = 'com.magicbluepenguin'
                artifactId = 'mbpplugin'
                if (project.hasProperty('versionArgs')) {
                    version = version + project.findProperty('versionArgs')
                }
                artifact sourcesJar
            }
        }
    }
    

    通过调用以下命令,我现在可以继续将插件作为开发版本发布:

    ./gradlew buildsrc:publishpluginmavenpublicationtomavenrepository-pversionargs=-develop

     类似资料:
    • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

    • Gradle版本:3.5 我试图发布我的自定义每1k展现的收入神器,但留档是真的不清楚这应该如何做。 这是我们发布的gradle脚本的摘录: 我不确定应该如何在发布闭包中引用每1k展现的收入工件的自定义。使用工件名称('our-software-rpm')不起作用,使用任务名称(rpmArts)也不起作用。那么我该怎么办? 此外,该项目还应用java插件来获取一个ArtifactHandler,该

    • 我有一个自定义dto类: 和一个使用Web Api(4.5. net框架)的控制器 客户端只有4.0.net框架,因此我将无法使用PostAsJsonAsync()方法。将对象从客户端传递到服务器的解决方案是什么? 我尝试了如下方法: 然而它给了我一个例外: 难道不能使用牛顿软件库吗?

    • Web 第三方应用开发-资源发布 资源上线 发布成功 Web 第三方应用开发-资源发布 更新时间:2018-07-03 22:17:05 本章介绍如何把您的应用资源上线。 资源上线 点击“线上发布”按钮: 发布成功

    • 我试图发布一个由Gradle 6.0创建的模糊JAR。1个ProGuard插件到Maven存储库。在过去的几天里,我学到了很多关于Gradle配置、变体和工件的知识,但我似乎无法做到这一点。我相信相关文件就是这里的文件。 我创建了一个简单的示例,展示了我在Github上的预期设置。 如果我运行在这个项目中,我得到了以下错误。 我还尝试了不推荐的插件。不幸的是,这个插件忽略了定制的ProGuard

    • 我想使用将我的jar上传到Maven中央存储库,并在其他项目中作为依赖项使用它。我遵循了这个不错的教程,结果我的JAR被上传到Sonatype Nexus(见下面的屏幕截图)。 我的jar的0.1版本可用;线路 在我的从属项目的文件。我通过点击屏幕截图中的关闭和释放按钮发布了0.1版本。之后,我评论了我在这里创建的Jira票据,并被告知中央同步将每两小时运行一次。 我的理解是,如果我现在想发布我的