gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:56:10 29 4
gpt4 key购买 nike

我已经构建了一个自定义 gradle 插件,我正在尝试将其发布到私有(private) maven 存储库。我使用 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 个任务添加到我的项目中:



这可行,我可以将我的插件推送到我的远程仓库,然后将其拉出并应用于我的示例客户端应用程序。如果我想使用不同的出版物名称(或多个),问题就开始了。在这种情况下,基于我的出版物构建的新任务将与“默认”任务一起添加。例如,如果我有以下发布 block :
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
}
}
}

我的项目中添加了以下 4 个任务:



当然,这也有问题:
  • 现在调用“默认”任务失败,因为它是 artifactId, version`等尚未定义。
  • 调用自定义任务成功,但尝试从客户端应用程序使用插件失败并返回 Plugin with id 'mbpplugin' not found错误。

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

    最佳答案

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

    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
    然后通过调用不带版本参数的任务来发布发布版本。当然,这不是最灵活和最理想的解决方案,但现在它可以让我继续前进。

    关于maven - 如何使用自定义发布方案通过 maven-publish 发布自定义 gradle 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358557/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com