2

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

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

所有任务都严重依赖于环境变量filterFile。我们使用 eclipse (Oxygen.2 Decemeber 2017) 和 buildship (2.2.1 v20180125-1441)

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

在此处输入图像描述

同样不适用于项目级别: 在此处输入图像描述

在此处输入图像描述

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

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 迁移的剩余部分,因此很难我们为每项任务更改它(因为我们有很多任务)。

请指教!

4

1 回答 1

2

请注意,这些是系统属性(Java 事物)而不是环境变量(操作系统事物)。

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

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

你怎么能解决你的问题?

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

systemProp.filter.file=hhe-lenovo.dev.properties
于 2018-02-25T11:26:40.087 回答