我正在尝试将 Checkstyle 和 PMD 集成到 Play 框架中。我首先使用 ymasory 创建的 giter8 模板生成一个示例 build.scala 文件,该文件支持 sbt 控制台中的 checkstyle 和 pmd 命令。这工作正常,我已将生成的项目上传到 github:
https://github.com/ics-software-engineering/sbt-example-qa
当我尝试将此代码与 Play new 命令创建的 Build.scala 文件一起使用时,会出现问题。giter8 模板使用 'settings' 值集成了 checkstyle 和 pmd,如此处所示(完整定义请参见实际文件):
object ProjectBuild extends Build {
val main = Project(
"sbt-example-qa",
new java.io.File("."),
settings = Defaults.defaultSettings ++ ProjectSettings.all
)
}
另一方面,“play new”命令生成的 Build.scala 文件具有不同的结构:
object ApplicationBuild extends Build {
val appName = "play-example-qa"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
// Add your project dependencies here,
javaCore,
javaJdbc,
javaEbean
)
val main = play.Project(appName, appVersion, appDependencies).settings(
// Add your own project settings here
)
}
具体来说,由“play new”创建的 Build.scala 文件定义了 play.Project 而不是 giter8 模板创建的 Project。
我所有“在此处添加我自己的项目设置”以将 Checkstyle 和 PMD 放入 Play 项目的尝试都失败了,并出现如下语法错误:
[info] Loading project definition from /Users/johnson/projecthosting/github/play- example-qa/project
[error] /Users/johnson/projecthosting/github/play-example-qa/project/Build.scala:17: overloaded method value settings with alternatives:
[error] (ss: sbt.Project.Setting[_]*)sbt.Project <and>
[error] => Seq[sbt.Project.Setting[_]]
[error] cannot be applied to (settings: Seq[sbt.Project.Setting[_]])
[error] val main = play.Project(appName, appVersion, appDependencies).settings(
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
供您参考,这是我尝试创建的示例 Play 项目,它合并了 giter8 模板:
https://github.com/ics-software-engineering/play-example-qa
有人可以解释如何在这个项目中修改 Build.scala 以便 Play 控制台可以以类似于 giter8 模板的方式接受“checkstyle”和“pmd”命令吗?也许通过分叉 play-example-qa 项目并修复 Build.scala?我打算将工作代码提供给 Play 社区以供将来参考。提前致谢。