Scala 在build.sbt中筛选类

Scala 在build.sbt中筛选类,scala,playframework,sbt,Scala,Playframework,Sbt,假设它可以为特定的类/包启用。可以这样做(我假设在build.sbt中): sources in (Compile, playEnhancerGenerateAccessors) := { ((javaSource in Compile).value / "models" ** "*.java").get } 我不习惯sbt/scala,我想知道如何在这种过滤中提供多个包。如果我可以选择带有指定注释的类,那就更好了。可能吗 编辑: 所以这个问题的动机是为了提高Play框架项目的编译速度。事

假设它可以为特定的类/包启用。可以这样做(我假设在build.sbt中):

sources in (Compile, playEnhancerGenerateAccessors) := {
  ((javaSource in Compile).value / "models" ** "*.java").get
}
我不习惯sbt/scala,我想知道如何在这种过滤中提供多个包。如果我可以选择带有指定注释的类,那就更好了。可能吗

编辑:
所以这个问题的动机是为了提高Play框架项目的编译速度。事实证明,即使我只增强了特定的包,编译速度也基本相同。这很奇怪,因为完全关闭PlayEnchancer会将我的项目的编译时间缩短近一半(30秒)。

范围
源设置为该PlayEnchancer任务存储一组文件,此示例仅过滤具有给定模式的文件:

  • (编译中的javaSource)。值应为项目中的
    src/main/java/
    目录
  • /“models”
    表示您只在
    src/main/java/models/
  • **“*.java”
    在所有子目录中搜索扩展名为
    .java
    的文件
  • .get
    只计算与模式匹配的文件列表
如果要组合多个模式,可以使用
++
--
运算符:

sources in (Compile, playEnhancerGenerateAccessors) := {
  val green = base / "green" ** "*.java"
  val blue  = base / "blue" ** "*.java"
  val red   = base / ** "*red*"
  (green +++ blue --- red).get
}
在sbt中,这些模式称为路径查找器,您可以在sbt文档中阅读如何使用它们。由于这只是根据文件的路径/名称过滤文件,所以我认为您不能以这种方式选择带有指定注释的类