Greg R
Greg R

Reputation: 1691

SBT reports unresolved dependency for com.typesafe.sbt#sbt-start-script;0.10.0?

I use SBT 0.13.0.

UPDATE it turned out that I've been using SBT 0.12.2 in the project (that I checked with sbt sbt-version and used sbt --version before).

With the following build.sbt SBT can't seem to be able to fetch the sbt-start-script plugin/dependency:

version := "0.1"

resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/"

scalaVersion := "2.10.2"

libraryDependencies ++= Seq(
  "play" % "play_2.10" % "2.1.0",
  "org.mongodb" %% "casbah" % "2.6.3",
  "com.github.nscala-time" %% "nscala-time" % "0.8.0",
  "org.twitter4j" % "twitter4j-stream" % "3.0.5"    
)

resolvers += Classpaths.typesafeResolver

addSbtPlugin("com.typesafe.sbt" % "sbt-start-script" % "0.10.0")

When I run sbt clean compile stage I get the following error:

[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.typesafe.sbt:sbt-start-script:0.10.0 (sbtVersion=0.13, scalaVersion=2.10)
[warn]
sbt.ResolveException: unresolved dependency: com.typesafe.sbt#sbt-start-script;0.10.0: not found

Upvotes: 1

Views: 4809

Answers (2)

Jacek Laskowski
Jacek Laskowski

Reputation: 74709

You should move the line

addSbtPlugin("com.typesafe.sbt" % "sbt-start-script" % "0.10.0")

into its own project/plugins.sbt file (as is also described in Details of the plugin's documentation). This way the plugin gets added to the project's installed plugins (via addSbtPlugin method call).

In the same documentation, there's the section Consider sbt-native-packager instead that says:

The more general native-packager plugin may replace this one in the future: https://github.com/sbt/sbt-native-packager

build.sbt should be as follows (it's only valid to get the plugin run successfully - I have not checked the other settings like libraryDependencies):

import com.typesafe.sbt.SbtStartScript

version := "0.1"

resolvers += "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/"

scalaVersion := "2.10.2"

libraryDependencies ++= Seq(
  "play" % "play_2.10" % "2.1.0",
  "org.mongodb" %% "casbah" % "2.6.3",
  "com.github.nscala-time" %% "nscala-time" % "0.8.0",
  "org.twitter4j" % "twitter4j-stream" % "3.0.5"
)

seq(SbtStartScript.startScriptForClassesSettings: _*)

With the build.sbt and project/plugins.sbt in place, when you run sbt shell you should be able to generate start script for the project.

jacek:~/sandbox/so/sbt-start-script
$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-start-script/project
[info] Updating {file:/Users/jacek/sandbox/so/sbt-start-script/project/}sbt-start-script-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] downloading http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-start-script/scala_2.10/sbt_0.13/0.10.0/jars/sbt-start-script.jar ...
[info]  [SUCCESSFUL ] com.typesafe.sbt#sbt-start-script;0.10.0!sbt-start-script.jar (2725ms)
[info] Done updating.
[info] Set current project to sbt-start-script (in build file:/Users/jacek/sandbox/so/sbt-start-script/)
[sbt-start-script]> start-script
[info] Updating {file:/Users/jacek/sandbox/so/sbt-start-script/}sbt-start-script...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] downloading http://repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.10/0.8.0/nscala-time_2.10-0.8.0.jar ...
[info]  [SUCCESSFUL ] com.github.nscala-time#nscala-time_2.10;0.8.0!nscala-time_2.10.jar (712ms)
[info] downloading http://repo1.maven.org/maven2/org/twitter4j/twitter4j-stream/3.0.5/twitter4j-stream-3.0.5.jar ...
[info]  [SUCCESSFUL ] org.twitter4j#twitter4j-stream;3.0.5!twitter4j-stream.jar (441ms)
[info] downloading http://repo1.maven.org/maven2/org/mongodb/casbah-commons_2.10/2.6.3/casbah-commons_2.10-2.6.3.jar ...
[info]  [SUCCESSFUL ] org.mongodb#casbah-commons_2.10;2.6.3!casbah-commons_2.10.jar (539ms)
[info] downloading http://repo1.maven.org/maven2/org/mongodb/casbah-core_2.10/2.6.3/casbah-core_2.10-2.6.3.jar ...
[info]  [SUCCESSFUL ] org.mongodb#casbah-core_2.10;2.6.3!casbah-core_2.10.jar (618ms)
[info] downloading http://repo1.maven.org/maven2/org/mongodb/casbah-query_2.10/2.6.3/casbah-query_2.10-2.6.3.jar ...
[info]  [SUCCESSFUL ] org.mongodb#casbah-query_2.10;2.6.3!casbah-query_2.10.jar (553ms)
[info] downloading http://repo1.maven.org/maven2/org/mongodb/casbah-gridfs_2.10/2.6.3/casbah-gridfs_2.10-2.6.3.jar ...
[info]  [SUCCESSFUL ] org.mongodb#casbah-gridfs_2.10;2.6.3!casbah-gridfs_2.10.jar (462ms)
[info] downloading http://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/2.11.3/mongo-java-driver-2.11.3.jar ...
[info]  [SUCCESSFUL ] org.mongodb#mongo-java-driver;2.11.3!mongo-java-driver.jar (605ms)
[info] downloading http://repo1.maven.org/maven2/org/twitter4j/twitter4j-core/3.0.5/twitter4j-core-3.0.5.jar ...
[info]  [SUCCESSFUL ] org.twitter4j#twitter4j-core;3.0.5!twitter4j-core.jar (523ms)
[info] Done updating.
[info] Wrote start script for mainClass := None to /Users/jacek/sandbox/so/sbt-start-script/target/start
[success] Total time: 21 s, completed Feb 15, 2014 9:43:42 PM

Upvotes: 1

user2845946
user2845946

Reputation: 1815

For Play 2.1.0.

In project/build.properties use:

sbt.version=0.12.2

In project/plugins.sbt use:

resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

addSbtPlugin("play" % "sbt-plugin" % "2.1.0")

In project/Build.scala use:

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {
    val appName         = "your_app_name"
    val appVersion      = "1.0"

    val appDependencies = Seq(
        // project dependencies
    )

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

It remains a good idea to clear the content of your .ivy2 cache which you can find on your system drive. Then do:

play clean-all
play compile
play ~run

Upvotes: 0

Related Questions