Gradle-插件maven-publish:如何仅将特定出版物发布到资源库

尼加德

我们有两个不同的工件将被发布到两个不同的Maven存储库中。

  • ProjectXMergedWar ”应发布到“ MyMavenRepo1 ”(快照)
  • ProjectXJarRelease ”应发布到“ MyMavenRepo2 ”(发行版)
  • 永远不要将“ ProjectXMergedWar”发布到“ MyMavenRepo2”(发行版)
  • 永远不要将“ ProjectXJarRelease”发布到“ MyMavenRepo1”(快照)

我们使用插件maven-publish在其中配置一组发布和存储库。然后,该插件会为发布和存储库的所有组合生成任务(请参阅底部的任务列表)。目前的任务publishpublishRelease正在做我们想要的东西,但也有我们不想要的任务。

一些解决方案可能是:

  • 我们可以删除不需要的任务**吗?
  • 我们是否可以将maven-publish配置为仅生成两个发布任务(所需任务*)?
  • 我们可以调用直接正确类repo.publish(artifact)或类似的东西)?

我看过的源代码PublishToMavenRepository看来我想执行的动作位于protected void doPublish

*所需任务:

  • publishProjectXMergedWarPublicationToMyMavenRepo1Repository + generatePom
  • publishProjectXJarReleasePublicationToMyMavenRepo2Repository + generatePom

* *不需要的任务:

  • publishProjectXMergedWarPublicationToMyMavenRepo2Repository
  • publishProjectXJarReleasePublicationToMyMavenRepo1Repository

摇篮文件:

apply plugin: 'maven-publish'
publishing {
    publications {
        ProjectXMergedWar(MavenPublication) {
            artifact mergeWar
            artifactId = 'projectx'
        }
        ProjectXJarRelease(MavenPublication) {
            artifact releaseJar
            artifactId = 'projectx'
        }
    }
    repositories {
        maven {
            name 'MyMavenRepo1'
            url 'http://artifactory/url/our-snapshot-local'
            credentials { (...) }
        }
        maven {
            name 'MyMavenRepo2'
            url 'http://artifactory/url/our-release-local'
            credentials { (...) }
        }
    }
}

task publish(dependsOn: [
    'generatePomFileForProjectXMergedWarPublication',
    'publishProjectXMergedWarPublicationToMyMavenRepo1Repository'
], overwrite: true) {
    // We override the normal publish which would have tried to publish all combinations of defined
    // publications and repositories:
    // - publishProjectXMergedWarPublicationToMyMavenRepo1Repository      (we use this in normal snapshot publish)
    // - publishProjectXMergedWarPublicationToMyMavenRepo2Repository      (not to be used)
    // - publishProjectXJarReleasePublicationToMyMavenRepo1Repository     (not to be used)
    // - publishProjectXJarReleasePublicationToMyMavenRepo2Repository     (we use this one in publishRelease)
}
task publishRelease(dependsOn: [
    'generatePomFileForProjectXJarReleasePublication',
    'publishProjectXJarReleasePublicationToMyMavenRepo2Repository'
])

任务输出:

$ ./gradlew tasks

(...)

Publishing tasks
----------------
generatePomFileForProjectXJarReleasePublication - Generates the Maven POM file for publication 'ProjectXJarRelease'.
generatePomFileForProjectXMergedWarPublication - Generates the Maven POM file for publication 'ProjectXMergedWar'.
publishProjectXJarReleasePublicationToMavenLocal - Publishes Maven publication 'ProjectXJarRelease' to the local Maven repository.
publishProjectXJarReleasePublicationToMyMavenRepo1Repository - Publishes Maven publication 'ProjectXJarRelease' to Maven repository 'MyMavenRepo1'.
publishProjectXJarReleasePublicationToMyMavenRepo2Repository - Publishes Maven publication 'ProjectXJarRelease' to Maven repository 'MyMavenRepo2'.
publishProjectXMergedWarPublicationToMavenLocal - Publishes Maven publication 'ProjectXMergedWar' to the local Maven repository.
publishProjectXMergedWarPublicationToMyMavenRepo1Repository - Publishes Maven publication 'ProjectXMergedWar' to Maven repository 'MyMavenRepo1'.
publishProjectXMergedWarPublicationToMyMavenRepo2Repository - Publishes Maven publication 'ProjectXMergedWar' to Maven repository 'MyMavenRepo2'.
publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.

(...)

Other tasks
-----------
(...)
publish
publishRelease
(...)
纳特·索阿·马蒂森(Knut Saua Mathiesen)

您可以禁用和隐藏“无效”任务,如下所示:

apply plugin: 'maven-publish'

publishing {
    repositories {
        maven {
            name 'Dev'
            url 'http://dev/'
            credentials {
                username 'username'
                password 'password'
            }
        }

        maven {
            name 'Prod'
            url 'http://prod/'
            credentials {
                username 'username'
                password 'password'
            }
        }

    }

    publications {
        // This will only be enabled on Dev
        MyDevJar(MavenPublication) {
            artifactId "test"
            version "1.0"
            groupId "org.example"
            artifact file('abc')
            ext.repo = 'Dev'
        }

        // This will only be enabled on prod
        MyJar(MavenPublication) {
            artifactId "test"
            version "1.0"
            groupId "org.example"
            artifact file('abc')
            ext.repo = 'Prod'
        }
    }
}

afterEvaluate {
    tasks.withType(PublishToMavenRepository) { task ->
        if (task.publication.hasProperty('repo') && task.publication.repo != task.repository.name) {
            task.enabled = false
            task.group = null
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gradle-插件maven-publish:如何仅将特定出版物发布到资源库

来自分类Dev

gradle-release插件+ Maven发布插件

来自分类Dev

gradle到Maven插件转换

来自分类Dev

关于Maven Publish Gradle插件吗?

来自分类Dev

如何使用Maven构建Gradle插件

来自分类Dev

Maven-发布插件vs人工Gradle插件

来自分类Dev

用于 Maven 发布等功能的 Gradle 发布插件

来自分类Dev

Android Gradle插件是否支持通过Maven加载本地库?

来自分类Dev

我如何在Teamcity上发布gradle来发布使用maven插件的gradle构建?

来自分类Dev

如何通过代理通过Gradle和Maven插件将工件上传到Maven Central

来自分类Dev

使用Maven-publish gradle插件获取uri的已发布工件

来自分类Dev

gradle Maven插件-如何自定义Maven上传的档案名称

来自分类Dev

gradle这个Maven的发布插件添加时间戳,如何避免把它变成后缀

来自分类Dev

如何强制 gradle 构建在每次构建时从 Maven 存储库重新下载 SNAPSHOT 插件

来自分类Dev

Gradle Maven-publish插件产生没有依赖项的pom

来自分类Dev

如何应用Gradle插件

来自分类Dev

在使用的gradle生成SHA512校验文件Maven的插件发布

来自分类Dev

Gradle Maven插件“安装”任务不适用于Android库项目

来自分类Dev

Android测试模块(Gradle插件1.3):来自非默认Maven存储库的依赖项

来自分类Dev

Gradle替换Maven程序集插件

来自分类Dev

如何将 Gradle 插件发布到 Artifactory?

来自分类Dev

使用Gradle将模块化库发布到Maven

来自分类Dev

Maven Wagon插件发布

来自分类Dev

Maven Wagon插件发布

来自分类Dev

插件如何以编程方式配置Maven-发布发布并允许build.gradle对其进行修改

来自分类Dev

插件如何以编程方式配置Maven-发布发布并允许build.gradle对其进行修改

来自分类Dev

无法使用Gradle Ear插件将Web-uri设置为从Maven存储库中收录战争

来自分类Dev

Maven发布插件-如何仅发布快照?

来自分类Dev

将findsecbugs插件与Gradle的findbugs插件集成

Related 相关文章

  1. 1

    Gradle-插件maven-publish:如何仅将特定出版物发布到资源库

  2. 2

    gradle-release插件+ Maven发布插件

  3. 3

    gradle到Maven插件转换

  4. 4

    关于Maven Publish Gradle插件吗?

  5. 5

    如何使用Maven构建Gradle插件

  6. 6

    Maven-发布插件vs人工Gradle插件

  7. 7

    用于 Maven 发布等功能的 Gradle 发布插件

  8. 8

    Android Gradle插件是否支持通过Maven加载本地库?

  9. 9

    我如何在Teamcity上发布gradle来发布使用maven插件的gradle构建?

  10. 10

    如何通过代理通过Gradle和Maven插件将工件上传到Maven Central

  11. 11

    使用Maven-publish gradle插件获取uri的已发布工件

  12. 12

    gradle Maven插件-如何自定义Maven上传的档案名称

  13. 13

    gradle这个Maven的发布插件添加时间戳,如何避免把它变成后缀

  14. 14

    如何强制 gradle 构建在每次构建时从 Maven 存储库重新下载 SNAPSHOT 插件

  15. 15

    Gradle Maven-publish插件产生没有依赖项的pom

  16. 16

    如何应用Gradle插件

  17. 17

    在使用的gradle生成SHA512校验文件Maven的插件发布

  18. 18

    Gradle Maven插件“安装”任务不适用于Android库项目

  19. 19

    Android测试模块(Gradle插件1.3):来自非默认Maven存储库的依赖项

  20. 20

    Gradle替换Maven程序集插件

  21. 21

    如何将 Gradle 插件发布到 Artifactory?

  22. 22

    使用Gradle将模块化库发布到Maven

  23. 23

    Maven Wagon插件发布

  24. 24

    Maven Wagon插件发布

  25. 25

    插件如何以编程方式配置Maven-发布发布并允许build.gradle对其进行修改

  26. 26

    插件如何以编程方式配置Maven-发布发布并允许build.gradle对其进行修改

  27. 27

    无法使用Gradle Ear插件将Web-uri设置为从Maven存储库中收录战争

  28. 28

    Maven发布插件-如何仅发布快照?

  29. 29

    将findsecbugs插件与Gradle的findbugs插件集成

热门标签

归档