我们将项目从 ant 切换到了 gradle。现在 gradle 脚本看起来像这样
[...]
def filterFile = System.getProperty('filter.file')
[...]
所有任务都严重依赖于环境变量filterFile。 我们使用 eclipse (Oxygen.2 Decemeber 2017) 和 buildship (2.2.1 v20180125-1441) (它以某种方式预装了 eclipse?buildship 自动附带 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 迁移的剩余部分,因此很难我们为每项任务更改此设置(因为我们有很多任务)。
请多多指教!
最佳答案
请注意,这些是 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
关于eclipse - Buildship如何在项目范围内设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48972177/