当我在初始 maven 构建后使用 IntelliJ 重建并重新启动我的软件时,它无法用它们的值替换属性文件中的占位符。
该软件是一个多模块项目,可构建到多个 Web 应用程序。 这些 Web 应用程序一起部署到一个 tomcat 中。
当我用 maven 构建时,它可以工作,并且属性被正确过滤。我可以使用 IntelliJ 的运行配置启动软件并使用它或调试它。但是,当我停止它并稍后通过触发 IntelliJ 的内部构建作为其 tomcat 运行配置的一部分来重新启动软件时,该软件会启动,但未正确过滤属性文件。我收到 bean 初始化错误,其中导致异常类似于 NumberFormatException
,因为 Java 无法将 "${timeout}"
解释为数字。
属性在 process-resources 阶段由 copy-resources maven mojo 过滤。
我认为这在不久之前就已经奏效了,所以我认为从根本上没有错。它似乎在大多数情况下仍然有效,但不是全部。该软件由大约 15 个部署在一起的不同网络服务组成,其中只有大约 5 个会出现此问题。
到目前为止,我已经在整个 pom 文件中寻找了 copy-resources mojo 的使用情况。它在超过 50 个不同的地方被调用,但总是以相同的方式使用不同的设置。所以,我认为这基本上是有效的。
这还能是什么?什么会触发这种行为?
该项目是一个大型的异构 java maven 项目,具有非常默认的技术堆栈。如果您知道 IntelliJ 功能、maven 插件或项目结构可能有问题的东西,请随时发表评论。
我的 IntelliJ 版本是 2021.1 Ultimate,maven 版本是捆绑的 3.6.3。