maven - 仅当发布时才进行Gradle发布

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

最佳答案

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

关于maven - 仅当发布时才进行Gradle发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55948197/

相关文章:

java - Maven/Nexus - 自动依赖更新

gradle 获取子项目名称、版本

dictionary - 为什么 Map 不适用于 Groovy 中的 GString?

java - Maven/Eclipse : add tomcat support to imported project

java - mockito test 在作为 junit test 运行时没有给出这样的方法错误,但是当在运行配置中手动添加 jar 时,它运行良好

JBoss Forge 新的 Gradle 项目?

rest - Docker - 复制 JAR 文件 : no such file or directory?

groovy html模板 ' yieldUnescaped '在ratpack中被忽略

mysql - grails findAll 条件或 executeQuery

spring - 以 Spring Java 配置方式实例化 Camel 时对 BundleContextAware 的运行时依赖