repository - 在 Gradle 构建中配置多个上传存储库

标签 repository release gradle

我想将我的工件上传到远程 Nexus 存储库。因此,我在 Nexus 中配置了快照和发布仓库。部署到这两个作品。

现在我想配置我的构建,这样我就可以决定要部署在哪个 repo 中:

  • gradle uploadArchives 应该部署到我的快照存储库
  • gradle release uploadArchives 应该部署到我的发布仓库

这是我的尝试:

apply plugin: 'war'
apply plugin: 'maven'

group = 'testgroup'
version = '2.0.0'
def release = false

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies{ providedCompile 'javax:javaee-api:6.0' }

task release <<{
    release = true;
    println 'releasing!'
}

uploadArchives {
    repositories {

        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/releases"){
                authentication(userName: "admin", password: "admin123")
            }
            addFilter('lala'){ x, y -> release }
        }
        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/snapshots"){
                authentication(userName: "admin", password: "admin123")
            }
            addFilter('lala'){ x, y ->!release}
            pom.version = version + '-SNAPSHOT'
        }
    }
}

如果我注释掉两个 mavenDeployer 配置之一,构建工作,但不是作为一个整体。
任何想法如何在一个构建文件中配置两个目标文件?

最佳答案

一种解决方案是添加一个 if-else 语句,根据具体情况添加两个部署程序之一。例如:

// should defer decision until end of configuration phase
gradle.projectsEvaluated {
    uploadArchives {
        repositories {
            mavenDeployer {
                if (version.endsWith("-SNAPSHOT")) { ... } else { ... }
            }               
        }
    }
}

如果您确实需要根据某个任务是否“存在”来改变配置,您可以根据 gradle.startParameter.taskNames 做出急切的决定。 (但你只会捕获指定为 Gradle 调用一部分的任务),或使用 gradle.taskGraph.whenReady回调(而不是 gradle.projectsEvaluated)并检查任务是否被安排执行。

关于repository - 在 Gradle 构建中配置多个上传存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772154/

相关文章:

android - Google map 未显示在已签名的 apk 中

Android 唤醒锁未释放

android - 不能将 PowerMock 与 Robolectric 和 Gradle (android) 一起使用

java - Maven - Archiva - 为不同的地理位置设置 Archiva

java - 多个存储库的 Maven 设置

git - 使用 SourceTree 将两个 GIT 存储库 merge 为一个

xml - Maven deploy 在下载 maven_metadata.xml 时挂起(如果它已经存在)

c# - iOS View Controller 未发布?

java - CommandInvokationFailure:Gradle构建失败。打开JDK错误

android - 如何为我所有的 android 项目设置 gradle 属性?