仅在发布时才进行Gradle发布

时间:2019-05-02 08:12:45

标签: maven gradle groovy

我有两个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,如何跳过在外部存储库上的发布?

1 个答案:

答案 0 :(得分:0)

您可以将第二个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
            }
        }
    }
}