eclipse - Buildship如何在项目范围内设置环境变量

标签 eclipse gradle buildship

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

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

所有任务都严重依赖于环境变量filterFile。 我们使用 eclipse (Oxygen.2 Decemeber 2017) 和 buildship (2.2.1 v20180125-1441) (它以某种方式预装了 eclipse?buildship 自动附带 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 迁移的剩余部分,因此很难我们为每项任务更改此设置(因为我们有很多任务)。

请多多指教!

最佳答案

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

相关文章:

java - 在 Tomcat 7.0\wtpwebapps 较旧的文件反射(reflect)

eclipse - Gradle Eclipse出现编译问题

gradle - 为什么我的依存关系被打印两次?

android - 为什么我必须在 gradle 中签署 qa flavor?

java - 如何找到影响其他测试执行的测试?

eclipse - 如何在导入项目时将参数传递给eclipse Buildship插件中的gradle

eclipse - 是否需要同时通过 Eclipse GUI 和 Gradle 配置文件添加依赖项?

Eclipse Egit : Update a github fork to merge changes of master repo?

eclipse - 如何让 Gradle 将 Lombok 添加到其项目和外部依赖库中?

java - 在eclipse之外运行jboss