mavenDeployer没有使用变量值

时间:2016-09-20 16:33:34

标签: maven gradle android-gradle mavendeployer

我有一个使用maven插件的build.gradle文件。我正在尝试构建一个项目并将工件上传到nexus repo。构建和上传部分工作正常,但是我遇到了试图动态设置版本名称和代码的问题。这是我的build.gradle文件中的重要任务:

uploadArchives {
    repositories {
        mavenDeployer {
            snapshotRepository(url: "https://artifact.example.net/content/repositories/snapshots") {
                authentication(userName: artifactUsername, password: artifactPassword)
            }

            pom.version = rootProject.ext.name.toString() + "-" + rootProject.ext.code.toString() + "-SNAPSHOT"
            pom.artifactId = appId
            pom.groupId = "com.example.mobile.android"
        }
    }
}

task getVersionCode(type: Exec) {
    commandLine './getVersionCode.sh'
    workingDir scriptDir
    standardOutput = new ByteArrayOutputStream()
    doLast {
        rootProject.ext.code = standardOutput.toString() as Integer
        println(code)
    }
}

task getVersionName(type: Exec) {
    commandLine './getVersionName.sh'
    workingDir scriptDir
    standardOutput = new ByteArrayOutputStream()
    doLast {
        rootProject.ext.name = standardOutput.toString()
        println(rootProject.ext.name)
    }
}

preBuild.dependsOn getVersionCode
preBuild.dependsOn getVersionName
uploadArchives.dependsOn getVersionCode
uploadArchives.dependsOn getVersionName

我发现即使getVersionCode和getVersionName任务在uploadArchives任务运行之前运行,变量rootProject.ext.name和rootproject.ext.code也有默认值,而不是动态设置的值通过任务。我已经验证了如果我设置了一个变量:

rootProject.ext.name = "new Name"
然后我可以打印出这样的值:

println(rootProject.ext.name)

一切正常,但是当我尝试使用mavenDeployer任务中的相同变量时,变量会重置为默认值。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试添加'mustRunAfter',例如preBuild.mustRunAfter getVersionCode