You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何彻底禁用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:03:30