如何彻底禁用Play框架Evolutions?阻止自动生成evolution.default文件夹
解决Play Framework禁用Evolutions后仍生成evolution.default文件夹的问题
看起来你已经做了基础配置,但Play还是在生成Evolutions相关的文件,这通常是因为依赖没彻底排除或者配置没覆盖到所有场景,下面是几个可行的解决方案:
彻底排除Evolutions依赖
仅仅通过配置禁用可能不够,因为如果你的项目依赖中依然包含play-evolutions模块,它可能会在启动时自动初始化并生成默认文件。在sbt项目中,你可以在build.sbt里排除这个依赖:// 如果用的是Guice依赖注入 libraryDependencies += guice.exclude("com.typesafe.play", "play-evolutions_2.13") // 如果直接引用了play-sql等模块,也需要排除 libraryDependencies += "com.typesafe.play" %% "play-sql" % playVersion exclude("com.typesafe.play", "play-evolutions_2.13")注意把
2.13替换成你实际使用的Scala版本。如果是Maven项目,在对应的<dependency>里添加<exclusions>标签排除play-evolutions。确保配置全局生效
检查你的配置是否在所有环境中都生效了:- 确认
application.conf根目录下的play.evolutions.enabled=false没有被环境特定的配置文件(比如application.dev.conf、application.prod.conf)覆盖。 - 如果使用环境变量来控制配置,确保
EVOLUTIONS_ENABLED环境变量被设置为false,并且配置文件中对应项是play.evolutions.enabled=${?EVOLUTIONS_ENABLED}。
- 确认
排查代码中的主动调用
检查项目代码中是否有直接调用Evolutions API的逻辑,比如:import play.api.db.evolutions.Evolutions Evolutions.applyEvolutions(database)这种代码会绕过配置直接触发Evolutions的初始化,需要删除或注释掉这类逻辑。
清理项目缓存
有时候sbt或Play的缓存可能残留了旧的依赖或配置状态,执行以下命令清理缓存后重新启动:sbt clean sbt cleanFiles然后重新编译启动项目,看看文件夹是否还会生成。
内容的提问来源于stack exchange,提问作者Ran
相关产品推荐
相关产品推荐

