2013-06-05 39 views
3

我正在尝试将Checkstyle和PMD集成到Play框架中。我首先使用由ymasory创建的giter8模板生成一个示例build.scala文件,该文件支持sbt控制台中的checkstyle和pmd命令。这工作得很好,我已经上传生成的项目到GitHub上:当我尝试使用此代码与播放新的命令创建的Build.scala文件时如何将Checkstyle和PMD集成到Play框架Build.scala文件中

https://github.com/ics-software-engineering/sbt-example-qa

的问题。该giter8模板集成的CheckStyle和PMD使用“设置”值,如下所示(请参阅整个定义的实际文件):

object ProjectBuild extends Build { 

    val main = Project(
    "sbt-example-qa", 
    new java.io.File("."), 
    settings = Defaults.defaultSettings ++ ProjectSettings.all 
) 
} 

在另一方面,由“戏产生的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 
) 
} 

具体来说,通过创建Build.scala文件‘打新’定义play.Project,而不是一个项目由giter8模板来创建。

我所有的企图“在这里加入我自己的项目设置”中获得的Checkstyle和PMD到播放projecthave失败,语法错误,如下列:

[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 

供您参考,这里是样本播放项目我试图创建一个融合了giter8模板:

https://github.com/ics-software-engineering/play-example-qa

有人能解释如何修改Build.scala在这个项目中,这样播放控制台可以接受“的CheckStyle”和“PMD” COMM和giter8模板类似吗?也许通过分解play-example-qa项目并修复Build.scala?我打算将工作代码提供给Play社区以供将来参考。提前致谢。

回答

5

我创建了一个GitHub repo可以回答你的问题。

可以与该项目启动,或者手动请按照下列步骤来适应我的giter8 template玩:

  1. 首先制作一个新的游戏项目,play new foo,为Java选择2。
  2. 将模板的pmd-ruleset.xmlcheckstyle-config.xml放入Play project目录中。
  3. 将模板的project/build.scala中的object ProjectSettings复制到Play的project/Build.scala中。
  4. 将模板的内容project/plugins.sbt添加到Play的project/plugins.sbt,记住在粘贴之前留出一个空行。
  5. 末,改打project/build.scala实际使用ProjectSettings.all从模板:

    
    val main = play.Project(appName, appVersion, appDependencies).settings(
        ProjectSettings.all: _* 
    )