如何屏蔽Play Framework路由文件中的单条废弃方法警告?
解决Play Framework路由引用废弃方法的精准警告屏蔽问题
方案1:创建转发方法(最精准,推荐)
在控制器中新增一个非废弃的转发方法,调用原废弃方法并通过@nowarn注解精准屏蔽该调用的警告:
import scala.annotation.nowarn class MyController @Inject()(val controllerComponents: ControllerComponents) extends BaseController { // 原废弃方法 @Deprecated def getThisIsDeprecated() = Action { Ok("Deprecated endpoint") } // 新增转发方法,供路由引用 @nowarn("cat=deprecation") def getThisIsDeprecatedForward() = getThisIsDeprecated() }
修改路由文件,保持原URL路径不变,将端点指向新增的转发方法(客户端无感知):
GET /deprecated controllers.MyController.getThisIsDeprecatedForward()
此方案仅屏蔽该转发方法的废弃警告,项目中其他废弃方法的警告会正常触发。
方案2:通过sbt编译参数屏蔽路由生成代码的警告
如果不想新增转发方法,可通过sbt的scalacOptions针对路由生成的代码文件屏蔽废弃警告。在build.sbt中添加:
scalacOptions ++= Seq( // 匹配路由编译生成的代码文件,仅屏蔽该文件内的废弃警告 "-Wconf:src=target/scala-.+/routes/.*:cat=deprecation:s" )
注意:该方案会屏蔽所有路由文件中引用废弃方法的警告,仅适合项目中仅有这一处路由引用废弃方法的场景。
内容的提问来源于stack exchange,提问作者M. Justin
相关产品推荐
相关产品推荐

