我们将项目从蚂蚁改为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.properties文件。但我认为这将设置项目变量而不是环境变量。当我们从ant切换到gradle时,gradle构建脚本依赖于System.getProperty(' filter.file'),这可能是为gradle设置它的错误方法,但它是来自从ant迁移,所以我们很难为每项任务改变它(因为我们有很多任务)。
请指教!
答案 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