在构建之前从 build.gradle 中的 artifactory 中检索 android colours.xml

我是 gradle 脚本的新手,我正在尝试做一些简单的事情。在 tarball 中的 artifactory repo 中有一个 android colours.xml。我想要做的就是配置 gradle,以便在它构建之前从 repo 获取该文件(如果它已更改)并将其复制到我的 android 模块的 res/values/colors.xml。我可以在命令行上使用 npm install 来做到这一点,但不知道如何从 build.gradle 中运行它。我的第一个尝试是在我的模块的 build.gradle 中。

task getResourceTokens(type: Exec) {
    workingDir "/Users/cbattle/Dev/DesignTokenTest"
    executable 'npm'
    args = ['install https://artifactory-lvs.corpzone.internalzone.com/artifactory/.../token-tester-0.0.7.tgz']
    doLast {
        println "Executed!"
    }
}

task copyfiles(type: Copy) {
    from '/Users/cbattle/node_modules/.../colors.xml'
    into '/Users/cbattle/Dev/DesignTokenTest/atoms/src/main/res/values'
}

copyfiles.dependsOn(getResourceTokens)
preBuild.dependsOn(copyfiles)

这失败了

Execution failed for task ':atoms:getResourceTokens'.
> Process 'command 'npm'' finished with non-zero exit value 1

我的 .npmrc 文件中有正确的凭据。如果我只是手动使用命令行,它会起作用。不清楚为什么会失败。

我还安装了 https://github.com/node-gradle/gradle-node-plugin,因此可以改用它。但以上应该有效。有什么想法吗?

谢谢

sanjiao0104 回答:在构建之前从 build.gradle 中的 artifactory 中检索 android colours.xml

我想通了。无论出于何种原因,Exec 任务似乎都无法运行 npm。相反,我安装了方便的 NodePlugin 并使用了它。

task getTokens(type: NpmTask) {
    args = ['install','https://artifactory-lvs.corpzone.internalzone.com/artifactory/.../token-tester-0.0.7.tgz']
}

这就像一个魅力!

本文链接:https://www.f2er.com/7099.html

大家都在问