2013-06-05 66 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: _* 
    )