【发布时间】:2018-02-27 17:49:09
【问题描述】:
我观察到在 Eclipse 中读取属性的方式不一致。我有一个非常简单的带有典型属性文件的 Springboot Web 项目。这是我的项目布局:
注意两个属性文件:testapplication.properties 和 application.properties。在这一点上它们是相同的,目的是将它们用于测试和非测试环境。
当我尝试在 Eclipse 中运行此应用程序时,我收到有关缺少预期属性值的错误,例如: 无法解析值“${min.thread.count}”中的占位符“min.thread.count”
当我使用 gradle 的 bootRun 任务运行相同的设置时,它运行良好。
当我在 InteliJ 中运行相同的设置时,它运行良好。
如果我将 testapplication.properties 重命名为 application.properties,则应用程序在 Eclipse 中运行良好。因此,它使用属性表单测试文件夹。
此外,我很确定当我今天早上启动 Eclipse 时,我能够使用正确的 application.properties 和 testapplication.properties 文件运行应用程序。我正在进行单元测试并将 testapplication.properties 重命名为 application.properties,做了一些工作,然后将其重命名为 testapplication.properties 应用程序拒绝启动。我试图复制它:使用两个不同的属性文件(应用程序和测试应用程序)关闭 eclipse,再次启动它并运行应用程序。但是,此时我有同样的问题(抱怨缺少属性值)。
如您所见,这是我奇怪的行为。就目前而言,我发现我不能使用 Eclipse,因为我不确定它会做什么。我已经切换到 InteliJ 的社区版,因为它似乎工作正常。但作为 Eclipse 的长期粉丝,我很伤心 :)
有人知道是什么原因造成的吗?
编辑: 我在这里签入了我的测试项目: https://github.com/twolak2003/CamelSpringBootEureka.git 在分支 PropertyFileIssue 中。只需克隆,切换到 PropertyFileIssue 分支,作为 gradle 项目导入到 eclipse。
这是一个运行 eureka 服务器和 eureka 客户端的简单 vanilla spring 云启动项目。就本期而言,我们将只关注 eureka-service。
我正在使用最新的 Eclipse Oxygen。我确实在 Eclise Neon 中注意到了同样的问题。我改用氧气,希望问题会消失。只有插件是 Spring IDE。使用 Java 8 运行它。
测试 1: 将 EurekaService/src/main/hello.java 作为 Java 应用程序启动。 它开始正常,将读取 src/main/resources/application.property 文件。
测试 2: 将 EurekaService/src/main/test/resources/restapplication.properties 重命名为 EurekaService/src/ main/test/resources/application.properties。再次启动 EurekaService 应用程序。
发现:它启动也很好,但它使用 /src/test/resources 中的属性文件。这对我来说也是个问题,它不应该使用 /test/ 来运行应用程序。
测试 3:现在将 /src/test/resources/application.properties 重命名为 /src/test/resources /testapplication.properties。 (这是 test1 的重复)。再次将 EurekaService/src/main/hello 作为 java 应用程序运行。 发现尽管这是对 test1 的重复,但由于“无法解析值“${tomek.prop}”中的占位符 'tomek.prop'”,测试还是失败了。
我是在做一些非常愚蠢的事情还是有问题? 现在,我怀着沉重的心情转而使用 InteliJ 来继续我的项目。 Eclipse 的行为实在是太不可预测了,我现在无法忍受 :(
【问题讨论】:
标签: spring eclipse spring-boot spring-boot-test