仅通过 gradle 下载节点 8.17.0 如果节点未安装在系统中
Download node 8.17.0 via gradle ONLY If the node is not installed in the system
build.gradle中的代码:
node {
version = '8.17.0'
download = true
}
plugins{
id "com.moowork.node" version "1.3.1"
}
我在下面添加了任务以获取已安装的节点版本并使 npm 任务依赖于该任务,并使用 stdout 值来决定是否下载节点,但节点块包含 'download = true'在一切之前执行并尝试每次下载节点。
task execute(type: Exec) {
commandLine 'node', '-v'
standardOutput = new ByteArrayOutputStream()
Set s = standardOutput.collect()
ext.stdout = {return s.getAt(0).toString()}
}
A Gradle 构建具有 three distinct phases:初始化、配置和执行。 node { download = true }
在配置阶段执行,而 execute
任务的主体在执行阶段执行。
要在配置阶段计算结果,您应该将 execute
任务更改为普通 Groovy 函数:
bash-3.2$ cat build.gradle
ext {
nodeVersion = getNodeVersion()
}
def getNodeVersion() {
def baos = new ByteArrayOutputStream()
def execResult = project.exec {
commandLine 'node', '-v'
standardOutput = baos
}
return baos.toString();
}
task printNodeVersion {
doLast {
println(project.nodeVersion)
}
}
bash-3.2$ ./gradlew :printNodeVersion
> Task :printNodeVersion
v13.12.0
BUILD SUCCESSFUL in 566ms
1 actionable task: 1 executed
在这里,我在 配置 期间将节点版本存储在扩展对象 ext
中,并在 [=26] 期间在 printNodeVersion
任务中打印值=]执行次。
对于您的用例,您应该在 配置 时间内调用该函数并检查 return 值是否等于“8.17.0”。如果是,那么 node
二进制文件的版本是 8.17.0,否则,节点二进制文件是不同的版本(或者可能缺少节点)。
build.gradle中的代码:
node {
version = '8.17.0'
download = true
}
plugins{
id "com.moowork.node" version "1.3.1"
}
我在下面添加了任务以获取已安装的节点版本并使 npm 任务依赖于该任务,并使用 stdout 值来决定是否下载节点,但节点块包含 'download = true'在一切之前执行并尝试每次下载节点。
task execute(type: Exec) {
commandLine 'node', '-v'
standardOutput = new ByteArrayOutputStream()
Set s = standardOutput.collect()
ext.stdout = {return s.getAt(0).toString()}
}
A Gradle 构建具有 three distinct phases:初始化、配置和执行。 node { download = true }
在配置阶段执行,而 execute
任务的主体在执行阶段执行。
要在配置阶段计算结果,您应该将 execute
任务更改为普通 Groovy 函数:
bash-3.2$ cat build.gradle
ext {
nodeVersion = getNodeVersion()
}
def getNodeVersion() {
def baos = new ByteArrayOutputStream()
def execResult = project.exec {
commandLine 'node', '-v'
standardOutput = baos
}
return baos.toString();
}
task printNodeVersion {
doLast {
println(project.nodeVersion)
}
}
bash-3.2$ ./gradlew :printNodeVersion
> Task :printNodeVersion
v13.12.0
BUILD SUCCESSFUL in 566ms
1 actionable task: 1 executed
在这里,我在 配置 期间将节点版本存储在扩展对象 ext
中,并在 [=26] 期间在 printNodeVersion
任务中打印值=]执行次。
对于您的用例,您应该在 配置 时间内调用该函数并检查 return 值是否等于“8.17.0”。如果是,那么 node
二进制文件的版本是 8.17.0,否则,节点二进制文件是不同的版本(或者可能缺少节点)。