在 build.sbt 中过滤 类
Filtering classes in build.sbt
Play enhancer docs 说它可以为特定的 classes/packages 启用。可以这样完成(我假设在 build.sbt 中):
sources in (Compile, playEnhancerGenerateAccessors) := {
((javaSource in Compile).value / "models" ** "*.java").get
}
我不习惯sbt/scala,我想知道如何在这种过滤中提供多个包。如果我可以选择带有指定注释的 类 就更好了。可能吗?
编辑:
所以这个问题的动机是提高 Play Framework 项目的编译速度。事实证明,即使我只增强了特定的包,编译速度也基本相同。奇怪的是,完全关闭 PlayEnchancer 后,我的项目的编译时间几乎减少了一半(30 秒)。
范围 sources
设置存储一组用于该 Play Enhancer 任务的文件,此示例仅过滤具有给定模式的文件:
(javaSource in Compile).value
应该是你项目中的 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 中,这些模式称为 Path Finders,您可以在 Paths 的 sbt 文档中阅读如何使用它们。由于这只是通过 path/name 过滤文件,我认为您不能通过这种方式 select 类 指定注释。
Play enhancer docs 说它可以为特定的 classes/packages 启用。可以这样完成(我假设在 build.sbt 中):
sources in (Compile, playEnhancerGenerateAccessors) := {
((javaSource in Compile).value / "models" ** "*.java").get
}
我不习惯sbt/scala,我想知道如何在这种过滤中提供多个包。如果我可以选择带有指定注释的 类 就更好了。可能吗?
编辑: 所以这个问题的动机是提高 Play Framework 项目的编译速度。事实证明,即使我只增强了特定的包,编译速度也基本相同。奇怪的是,完全关闭 PlayEnchancer 后,我的项目的编译时间几乎减少了一半(30 秒)。
范围 sources
设置存储一组用于该 Play Enhancer 任务的文件,此示例仅过滤具有给定模式的文件:
(javaSource in Compile).value
应该是你项目中的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 中,这些模式称为 Path Finders,您可以在 Paths 的 sbt 文档中阅读如何使用它们。由于这只是通过 path/name 过滤文件,我认为您不能通过这种方式 select 类 指定注释。