【问题标题】:Buildship how to set environment variable on project scopeBuildship如何在项目范围内设置环境变量
【发布时间】:2018-08-04 22:41:51
【问题描述】:

我们将项目从 ant 切换到 gradle。现在 gradle 脚本看起来像这样

[...]    
def filterFile = System.getProperty('filter.file')
[...]

所有任务都严重依赖环境变量filterFile。 我们使用 eclipse (Oxygen.2 Decemeber 2017) 和 buildship (2.2.1 v20180125-1441) (它以某种方式预装了 Eclipse?构建船自动与 Eclipse 一起提供是否正确?)

我可以让它工作的唯一方法是在任务级别设置变量见截图

同样的不工作在项目级别:

当我现在删除任务上的设置并将其放在项目全局设置中并执行它说的完全相同的任务时:

Program Arguments: None
Build Scans Enabled: false
Offline Mode Enabled: false
Gradle Tasks: copyHtml

Filter file null not loaded, some tasks may fail

当我将它设置在任务级别时,它会起作用。

这是我在 Eclipse 中对 gradle 的偏好设置:

您能否解释一下如何设置项目范围的环境变量。 顺便说一句:我用谷歌搜索了这个问题,发现了主目录 gradle.properties 文件。但我认为这将设置项目变量而不是环境变量。当我们从 ant 切换到 gradle 时,gradle 构建脚本依赖于 System.getProperty('filter.file') 这可能是为 gradle 设置它的错误方法,但它是从 ant 迁移的剩余部分,因此很难我们为每项任务更改此设置(因为我们有很多任务)。

请指教!

【问题讨论】:

    标签: eclipse gradle buildship


    【解决方案1】:

    请注意,这些是 system properties(Java 事物)而不是 environment variables(操作系统事物)。

    为什么您当前的设置不起作用?

    您的第二个示例不应用项目范围的命令行参数,而是应用 Eclipse Run 配置的命令行参数,该配置在没有指定任何任务的情况下执行 Gradle。这将导致 Gradle 仅运行 配置阶段 而不执行任何任务,或者,如果您在构建脚本中指定它们,则运行默认任务。

    你如何解决你的问题?

    正如您在Gradle documentation on system properties 中看到的,您不仅可以使用命令行选项-D 来注册系统属性,还可以使用您已经提到的gradle.properties 文件。只需将systemProp 前缀添加到属性名称:

    systemProp.filter.file=hhe-lenovo.dev.properties
    

    【讨论】:

    • 感谢您的快速回答,gradle.properties 文件需要放在哪里?
    • build.gradle 文件位于同一目录中(如果属性适用于所有用户)或GRADLE_USER_HOME,默认为您个人主目录中的文件夹.gradle。跨度>
    • 为什么 Buildship 不能像正常的运行配置一样提供自定义环境的可能性?
    猜你喜欢
    • 2023-03-28
    • 2016-05-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2021-10-07
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多