scalasbtdependency-managementplayframework-2.6scala-version-cross-build

sbt scripted plugin fails as an unresolved dependency on publishing cross-compiled scala versions


Our play-googleauth library is built on Scala 2.12, and cross-compiled to Scala 2.11, using sbt 1.1.6. As the library is intended to be run in Play projects, we've historically provided an example standalone Playframework project that uses the library, so that users can see how to set it up.

I recently added the sbt plugin scripted to the project, so that by running the sbt command scripted we could check the example project works correctly. However, I now find that our release process fails:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-sbt#scripted-sbt_2.11;1.1.6: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]      org.scala-sbt:scripted-sbt_2.11:1.1.6 ((sbt.ScriptedPlugin.projectSettings) ScriptedPlugin.scala#L43)
[warn]        +- com.gu:play-googleauth_2.11:0.7.7-SNAPSHOT

If you clone the repo and checkout the scripted-plugin-fails-to-resolve tag you can reproduce this by running sbt +publishLocal.

What's going wrong here? Is the problem that scripted is intended for development of sbt plugins rather that Scala libraries (if so, is there a good alternative)? I know that scripted is used in Play 2.6, which cross compiles to both Scala 2.12 & 2.11.


Solution

  • Maven Central indicates scripted-plugin 1.1.6 is not published for 2.11.

    Play 2.6 uses SBT 0.13.17 and so fetches scripted-plugin 0.13.17