Buildship如何在项目范围内设置环境变量
Buildship how to set environment variable on project scope
我们将我们的项目从 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
当我将它设置在任务级别时,它会起作用。
这是我对 gradle 在 eclipse 中的偏好设置:
能否请您解释一下如何设置项目范围的环境变量。
顺便说一句:我用谷歌搜索了这个问题,发现了主目录 gradle.properties 文件。但我认为这将设置项目变量而不是环境变量。当我们从 ant 切换到 gradle 时,gradle 构建脚本依赖于 System.getProperty('filter.file') 这可能是为 gradle 设置的错误方法但是这是从 ant 迁移而来的遗留物,因此我们很难为每个任务更改它(因为我们有很多)。
请指教!
请注意,这些是 system properties (a Java thing) instead of environment variables(操作系统的东西)。
为什么您当前的设置不起作用?
您的第二个示例不应用 project-wide 命令行参数,但应用 Eclipse 运行 配置的命令行参数,执行 Gradle 没有指定任何任务。这将导致 Gradle 只是 运行 配置阶段 而没有执行任何任务,或者,如果您在构建脚本中指定了它们, 运行默认任务。
如何解决你的问题?
正如您在 Gradle documentation on system properties 中所读到的,您不仅可以使用命令行选项 -D
来注册系统 属性,还可以使用 gradle.properties
文件(s) 你已经提到了。只需将 systemProp
前缀添加到 属性 名称:
systemProp.filter.file=hhe-lenovo.dev.properties
我们将我们的项目从 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
当我将它设置在任务级别时,它会起作用。
这是我对 gradle 在 eclipse 中的偏好设置:
能否请您解释一下如何设置项目范围的环境变量。 顺便说一句:我用谷歌搜索了这个问题,发现了主目录 gradle.properties 文件。但我认为这将设置项目变量而不是环境变量。当我们从 ant 切换到 gradle 时,gradle 构建脚本依赖于 System.getProperty('filter.file') 这可能是为 gradle 设置的错误方法但是这是从 ant 迁移而来的遗留物,因此我们很难为每个任务更改它(因为我们有很多)。
请指教!
请注意,这些是 system properties (a Java thing) instead of environment variables(操作系统的东西)。
为什么您当前的设置不起作用?
您的第二个示例不应用 project-wide 命令行参数,但应用 Eclipse 运行 配置的命令行参数,执行 Gradle 没有指定任何任务。这将导致 Gradle 只是 运行 配置阶段 而没有执行任何任务,或者,如果您在构建脚本中指定了它们, 运行默认任务。
如何解决你的问题?
正如您在 Gradle documentation on system properties 中所读到的,您不仅可以使用命令行选项 -D
来注册系统 属性,还可以使用 gradle.properties
文件(s) 你已经提到了。只需将 systemProp
前缀添加到 属性 名称:
systemProp.filter.file=hhe-lenovo.dev.properties