如何在 gradle 中使用 exec() 输出

2024-06-22

我正在尝试实现一个 gradle 任务,以从一系列环境变量值和 shell 执行动态创建 buildsignature.properties 文件。我基本上可以正常工作,但我似乎无法获得 shell 命令的输出。这是我的任务...

task generateBuildSignature << {
    ext.whoami = exec() {
        executable = "whoami"
    }
    ext.hostname = exec() {
         executable = "hostname"
    }
    ext.buildTag = System.env.BUILD_TAG ?: "dev"

    ant.propertyfile(
        file: "${buildDir}/buildsignature.properties",
        comment: "This file is automatically generated - DO NOT EDIT!" ) {
        entry( key: "version", value: "${project.version}" )
        entry( key: "buildTimestamp", value: "${new Date().format('yyyy-MM-dd HH:mm:ss z')}" )
        entry( key: "buildUser", value: "${ext.whoami}" )
        entry( key: "buildSystem", value: "${ext.hostname}" )
        entry( key: "buildTag", value: "$ext.buildTag" )
    }
}

但生成的属性字段并未获得 buildUser 和 buildSystem 所需的结果。

#This file is automatically generated - DO NOT EDIT!
#Mon, 18 Jun 2012 18:14:14 -0700
version=1.1.0
buildTimestamp=2012-06-18 18\:14\:14 PDT
buildUser=org.gradle.process.internal.DefaultExecHandle$ExecResultImpl@2e6a54f9
buildSystem=org.gradle.process.internal.DefaultExecHandle$ExecResultImpl@46f0bf3d
buildTag=dev

如何让 buildUser 和 buildSystem 匹配相应 exec 的输出而不是某些默认的 ExecResultImpl toString?这真的没那么难,不是吗?


这是我从 exec 获取标准输出的首选语法:

def stdout = new ByteArrayOutputStream()
exec{
    commandLine "whoami"
    standardOutput = stdout;
}
println "Output:\n$stdout";

在这里找到:http://gradle.1045684.n5.nabble.com/external-process-execution-td1431883.html http://gradle.1045684.n5.nabble.com/external-process-execution-td1431883.html(请注意,该页面有一个拼写错误,并提到了 ByteArrayInputStream 而不是 ByteArrayOutputStream)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 gradle 中使用 exec() 输出 的相关文章

随机推荐

  • 针对表中的每一行运行 SQL Server 函数

    我有一个函数可以迭代表中的 每一行 当它运行时 它应该查看每一行 提取该行的相关 SET 值并运行该函数 该函数依次返回结果并使用正确的值更新正确的行 发生的情况是 它正在运行并返回最后一行的值 并用该值更新所有行 有什么想法我做错了吗 S
  • 将数组传递给模板函数

    我正在尝试创建一个以数组作为参数的模板函数 该函数返回数组中数字的总和 这是我的代码 template
  • 适用于 F# 联合类型的简洁通用类型处理程序

    我在我的简洁对象上使用类似于枚举的联合类型 type Confidence Low Medium High type Goal Confidence Confidence 我创建了一个自定义类型处理程序以使其正常工作 type UnionH
  • 如何设置将在 Facebook 上显示为预览的网站图像?

    当您在 Facebook 上分享链接时 它会自动在网站上查找图像并随机选择一张作为预览 如何影响预览图像 当一个人在他的 Facebook 上分享网站链接时 1 将 Open Graph XML 命名空间扩展包含到您的 HTML 声明中 2
  • new Date() 设置错误的月份

    我想解析一个字符串 甚至是整数 新日期 函数 但看看会发生什么 date 2015 12 13 2015 12 13 date 2015 12 13 date2 new Date date Sat Dec 12 2015 19 00 00
  • 在移动浏览器上自动播放视频元素

    我读到自动播放是不可能的 或者不建议在 iOS 和 Android 上进行 更多信息请参见 移动设备 Android Chrome 和 Firefox 上的 iframe HTML5 播放器无法自动播放 https stackoverflo
  • 如何将 Java 依赖项添加到 Google Dataflow 项目?

    我的 Java 项目有很多来自第三方库的 jar 以及我自己的代码 如何部署这些以便 Google Cloud Dataflow 可以使用它们 有有关如何在 Python 中执行此操作的文档 https cloud google com d
  • 如何将 ENUM 值从视图转换为字符串到控制器

    所以我已经知道如何获取字符串 整数 十进制 现在我在枚举的这一部分中苦苦挣扎 如何将枚举转换为字符串 Enum statecode apsp Customer BillingAddress StateCode Value Customer
  • 最大化 iFrame(因此它看起来是请求页面)

    我如何 跨浏览器兼容 最大化 iFrame 以便它看起来是 URL 栏中的页面 即使它是从不同的服务器提供的 我想这应该可行
  • 正则表达式匹配 json 中的键

    我正在尝试匹配这种类型的 JSON 中的键 define key1 some text and more key2 some text key3 more some text key4 some text 用这个正则表达式 lt s s w
  • python 多线程比顺序代码更快...为什么?

    在许多有关 python 多线程的堆栈溢出问答中 我读到 python 有 GIL 因此多线程比顺序代码慢 但在我的代码中它看起来并不像 这是多线程代码 代码已更新2023年2月21日 import threading import tim
  • 将java线程分布在多个服务器上?

    我对 java 很陌生 并且非常喜欢学习它 我编写了一个运行良好的程序 但当我添加更多数据来处理时 它会花费一些时间 我把它做成了线程化 它确实加快了很多速度 但现在我正在考虑尝试加快它的速度 显然 它需要处理的数据越多 所需的时间就越长
  • 如何接收语音(通话中)流类型的音量更改事件?

    我正在尝试注册一个广播接收器来处理VOLUME CHANGED ACTION活动 仅针对volume voice流类型 我根据经验认为是索引0 in Settings System VOLUME SETTINGS 标签EXTRA VOLUM
  • Cordova 2.7.0 PushPlugin“无法解析cordova”和“无法解析ctx”

    我做了什么 在 cordova android bin 中使用 create 创建了 cordova 项目 通过添加 PushPlugin科尔多瓦普拉曼 https github com apache cordova plugman 将 c
  • Azure Functions 部署源 Visual Studio Team Service 项目

    我正在尝试链接 Azure Functions 部署以与 Visual Studio Team Service 集成 但是一旦我选择 VSTS 作为源 它就不会显示任何其他项目 我的帐户中还有其他来自 VSTS 项目的 Web 应用程序 这
  • 尾递归支持缩短其他函数调用的堆栈吗?

    支持尾递归的语言可以将相同的技术应用于非递归函数调用吗 例如 如果最后一个函数foo所做的是返回调用的值bar 语言可能会丢弃foo的堆栈框架 是否有已知的语言可以真正做到这一点 Erlang 确实如此 http learnyousomee
  • 在c#中过滤流

    在 C 中逐行过滤流 读取器的最简单方法是什么 有点像将 sed 放在管道中间 我想将 iCalendar 文件提供给DDay iCal but DDay iCal死在 VERSION 5 1 1 因为它想要一个number or 数字 分
  • Qt 文本选择白线和文本宽度

    我想在 QTextEdit 中自定义文本选择 我想要两件事 选择时删除空格 线条 能够选择选择的宽度 或者小部件宽度 或文本宽度 空白 线条 通常 我想要的是 来自 Bear 应用程序 熊文本选择 在使用 QTextEdit 小部件时 我注
  • 使用 Gulp-babel 并得到“严格模式下的参数名称冲突”

    我正在尝试使用吞咽通天塔 https www npmjs com package gulp babel所以我可以开始在我的 ES5 应用程序中编写一些 ES6 ES2015 代码 var gulp require gulp gutil re
  • 如何在 gradle 中使用 exec() 输出

    我正在尝试实现一个 gradle 任务 以从一系列环境变量值和 shell 执行动态创建 buildsignature properties 文件 我基本上可以正常工作 但我似乎无法获得 shell 命令的输出 这是我的任务 task ge