Buildship如何在项目范围上设置环境变量

时间:2018-02-25 09:45:00

标签: eclipse gradle buildship

我们将项目从蚂蚁改为gradle。现在gradle脚本看起来像这样

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

所有任务都严重依赖于环境变量 filterFile 。 我们使用eclipse(Oxygen.2 Decemeber 2017)与buildship(2.2.1 v20180125-1441) (以某种方式预先安装了eclipse?这是正确的,自动构建是否带有eclipse?)

我能使其工作的唯一方法是在任务级别设置变量,参见截图

enter image description here

项目级别的不能正常工作enter image description here

enter image description here

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

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的偏好设置: enter image description here

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

请指教!

1 个答案:

答案 0 :(得分:3)

请注意,那些是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