user504909
user504909

Reputation: 9559

how to use project/Build.scala generate java playproject?

I use playframework2.2: try to build a play support project.

in my Build.scala, I want to add play.Project.playJavaSetting:

val main = play.Project(appName, appVersion, appDependencies)
.settings(play.Project.playJavaSettings)   //error here
.settings(
    resolvers += "webjars" at "http://webjars.github.com/m2",
    resolvers += "typesafe" at "http://repo.typesafe.com/typesafe/release" 
)

the error is:

[error] F:\git\play-example-form\project\Build.scala:19: overloaded method value
settings with alternatives:
[error]   (ss: sbt.Def.Setting[_]*)sbt.Project <and>
[error]   => Seq[sbt.Def.Setting[_]]
[error]  cannot be applied to (Seq[sbt.Setting[_]])
[error]         .settings(play.Project.playJavaSettings)
[error]          ^

If I do not add playJavaSetting, it give me error about wrong collection apply, I mean:

    val main = play.Project(appName, appVersion, appDependencies)
//.settings(play.Project.playJavaSettings)   

and the error is:

[error]   required: play.api.data.Form<StudentFormData>,scala.collection.immutab
le.Map<String,Object>,scala.collection.immutable.List<String>,scala.collection.i
mmutable.Map<String,Object>,scala.collection.immutable.Map<String,Object>
[error]   found: play.data.Form<StudentFormData>,java.util.Map<String,Boolean>,j
ava.util.List<String>,java.util.Map<String,Boolean>,java.util.Map<String,Boolean

you can see the framework apply the scala.collection.immutable.List instead of play.util.List, If I really want to apply the java collections how to set the environment setting in Build.scala file?

Upvotes: 1

Views: 474

Answers (1)

lpiepiora
lpiepiora

Reputation: 13749

You should change

.settings(play.Project.playJavaSettings)

to

.settings(play.Project.playJavaSettings: _*)

The settings method is declared as def settings(ss: Setting[_]*), which means it takes repeated parameters of type Setting[_]. The play.Project.playJavaSettings is of type Seq[Setting[_]]. To convert one to another Scala has a special type annotation.

If you are interested in details check 4.6.2 Repeated Parameters of The Scala Language Specification

Upvotes: 2

Related Questions