【问题标题】:Gradle publishing only if it is a release仅当它是发行版时才发布 Gradle
【发布时间】:2019-09-20 17:23:33
【问题描述】:

我有两个 Maven 存储库,一个是本地的,一个是外部的。

在我的本地存储库中,我将发布快照和版本。 在外部存储库中,我将只发布版本。

我在 build.gradle 中用于发布的当前代码:

publishing {
    ...

    repositories {
        maven { // Local Nexus Repository
            ...

            def releaseRepoUrl = "...//repository/maven-releases/"
            def snapshotsRepoUrl = "...//repository/maven-snapshots/"

            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
        }

        maven { // external Nexus Repository (only publish if it is a release)
            ...

            def releaseRepoUrl = "...//repository/maven-releases/"

            url = version.endsWith('SNAPSHOT') ? "" : releaseRepoUrl
        }
    }
}

问题是,如果 url 是“”,则会发生错误,这是合乎逻辑的,因为他无法发布到该 url。

如果是 SNAPSHOT,我如何跳过在外部存储库上的发布?

【问题讨论】:

  • 你能把第二个maven块包裹在if (!version.endsWith('SNAPSHOT')) {
  • @tim_yates 谢谢,它有效!这么简单的解决方案:)
  • 很高兴为您提供帮助!将其发布为答案,因此希望将来可以对其他人有所帮助:-)

标签: maven gradle groovy


【解决方案1】:

您可以将第二个 maven 块包装在 if 语句中,如下所示:

publishing {
    ...

    repositories {
        maven { // Local Nexus Repository
            ...

            def releaseRepoUrl = "...//repository/maven-releases/"
            def snapshotsRepoUrl = "...//repository/maven-snapshots/"

            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releaseRepoUrl
        }
        if (!version.endsWith('SNAPSHOT')) {
            maven { // external Nexus Repository (only publish if it is a release)
                ...

                def releaseRepoUrl = "...//repository/maven-releases/"

                url = releaseRepoUrl
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多