1

I have an sbt build with 2 duplicated projects configuration. See example:

lazy val MyProjectOne = Project(id = "OneId", base = file("path/OneId"))
    .dependsOn(moduleOne)
    .settings(plugin.settings: _*)
    .settings(defaultSettings: _*)
    .settings(webSettings: _*)
    .settings(libraryDependencies ++= commonTests)

lazy val MyProjectTwo = Project(id = "TwoId", base = file("path/TwoId"))
    .dependsOn(moduleOne)
    .settings(plugin.settings: _*)
    .settings(defaultSettings: _*)
    .settings(webSettings: _*)
    .settings(libraryDependencies ++= commonTests)

It is obvious that MyProjectOne and MyProjectTwo differs only in id and base properties.
Is there a way to refactor sbt build like this:

lazy val template = Project()
    .dependsOn(moduleOne)
    .settings(plugin.settings: _*)
    .settings(defaultSettings: _*)
    .settings(webSettings: _*)
    .settings(libraryDependencies ++= commonTests)

//Just as example:
lazy val MyProjectOne = Project(id = "OneId", base = file("path/OneId")).extends(template)
lazy val MyProjectTwo = Project(id = "TwoId", base = file("path/TwoId")).extends(template)

How can I do that with sbt?

Also

With maven I can define a parent project pom for that case. Is there analog in sbt?

Cherry
  • 31,309
  • 66
  • 224
  • 364

0 Answers0