Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sbt 0.11.1 doesn't retrieve scalatra 2.1.0-SNAPSHOT dependency

Tags:

scala

sbt

I've just upgraded to sbt 0.11.1 that doesn't seem to be fetching a certain dependency. Things worked fine before the upgrade.

I have this dependency:

"org.scalatra" %% "scalatra" % "2.1.0-SNAPSHOT",

And when I compile:

> update
[success] Total time: 0 s, completed Nov 18, 2011 5:44:16 PM
> compile
[info] Compiling 29 Scala sources and 1 Java source to
/home/yang/pod/sales/scala/target/scala-2.9.1/classes...
[error] /home/yang/pod/sales/scala/src/main/scala/com/pod/Web.scala:125:
not found: type ScalatraServlet
[error] class PodWeb extends ScalatraServlet with ScalateSupport with
FileUploadSupport {
[error]                      ^
[error] class file needed by ScalateSupport is missing.
[error] reference type ScalatraKernel of package org.scalatra refers
to nonexisting symbol.
[error] two errors found
[error] {file:/home/yang/pod/sales/scala/}pod/compile:compile:
Compilation failed
[error] Total time: 10 s, completed Nov 18, 2011 5:44:45 PM

The file seems to be missing:

$ ls /home/yang/.ivy2/cache/org.scalatra/scalatra_2.9.1/jars/
scalatra_2.9.1-2.1.0-SNAPSHOT-sources.jar

The file exists in the repo, though:

https://oss.sonatype.org/content/repositories/snapshots/org/scalatra/scalatra_2.9.1/2.1.0-SNAPSHOT/

This is still happening even if I blow away ~/.ivy2/. Any hints what's happening?

Complete build.sbt below:

name := "pod"

version := "1.0"

scalaVersion := "2.9.1"

seq(coffeeSettings: _*)

seq(webSettings :_*)

seq(sbtprotobuf.ProtobufPlugin.protobufSettings: _*)

libraryDependencies ++= Seq(
  "org.scalaquery" % "scalaquery_2.9.0" % "0.9.4",
  "postgresql" % "postgresql" % "9.0-801.jdbc4", // % "runtime",
  "com.jolbox" % "bonecp" % "0.7.1.RELEASE",
  "ru.circumflex" % "circumflex-orm" % "2.1-SNAPSHOT",
  "ru.circumflex" % "circumflex-core" % "2.1-SNAPSHOT",
  "net.sf.ehcache" % "ehcache-core" % "2.4.3",
  // snapshots needed for scala 2.9.0 support
  "org.scalatra" %% "scalatra" % "2.1.0-SNAPSHOT",
  "org.scalatra" %% "scalatra-scalate" % "2.1.0-SNAPSHOT",
  "org.scalatra" %% "scalatra-fileupload" % "2.1.0-SNAPSHOT",
  "org.fusesource.scalate" % "scalate-jruby" % "1.5.0",
  "org.fusesource.scalamd" % "scalamd" % "1.5", // % runtime,
  "org.mortbay.jetty" % "jetty" % "6.1.22",
  "net.debasishg" % "sjson_2.9.0" % "0.12",
  "com.lambdaworks" % "scrypt" % "1.2.0",
  "org.mortbay.jetty" % "jetty" % "6.1.22" % "container",
  // "org.bowlerframework" %% "core" % "0.4.1",
  "net.sf.opencsv" % "opencsv" % "2.1",
  "org.apache.commons" % "commons-math" % "2.2",
  "org.apache.commons" % "commons-lang3" % "3.0",
  "com.google.protobuf" % "protobuf-java" % "2.4.1",
  "ch.qos.logback" % "logback-classic" % "0.9.29",
  "org.scalatest" % "scalatest_2.9.0" % "1.6.1",
  "com.h2database" % "h2" % "1.3.158",
  "pentaho.weka" % "pdm-3.7-ce" % "SNAPSHOT",
  // this line doesn't work due to sbt bug:
  // https://github.com/harrah/xsbt/issues/263
  // work around by manually downloading this into the lib/ directory
  // "org.rosuda" % "jri" % "0.9-1" from "https://dev.partyondata.com/deps/jri-0.9-1.jar",
  "net.java.dev.jna" % "jna" % "3.3.0",
  "org.scalala" % "scalala_2.9.0" % "1.0.0.RC2-SNAPSHOT",
  "rhino" % "js" % "1.7R2",
  "junit" % "junit" % "4.9",
  "org.apache.commons" % "commons-email" % "1.2",
  "commons-validator" % "commons-validator" % "1.3.1",
  "oro" % "oro" % "2.0.8", // validator depends on this
  "javax.servlet" % "servlet-api" % "2.5" % "provided->default"
)

fork in run := true

javaOptions in run ++= Seq(
  "-Xmx3G",
  "-Djava.library.path=" + System.getenv("HOME") +
  "/R/x86_64-pc-linux-gnu-library/2.13/rJava/jri:" +
  "/usr/lib/R/site-library/rJava/jri"
)

//javaOptions in run ++= Seq(
//  "-Dcom.sun.management.jmxremote",
//  "-Dcom.sun.management.jmxremote.port=3000",
//  "-Dcom.sun.management.jmxremote.authenticate=false",
//  "-Dcom.sun.management.jmxremote.ssl=false"
//)

scalacOptions ++= Seq("-g:vars", "-deprecation", "-unchecked")

// needed for the scalatra snapshots
resolvers ++= Seq(
  "POD" at "https://dev.partyondata.com/deps/",
  "Scala-Tools Snapshots" at "http://scala-tools.org/repo-snapshots/",
  "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/",
  "Sonatype OSS releases" at "http://oss.sonatype.org/content/repositories/releases",
  "ScalaNLP" at "http://repo.scalanlp.org/repo",
  "Pentaho" at "http://repo.pentaho.org/artifactory/pentaho/",
  "FuseSource snapshots" at "http://repo.fusesource.com/nexus/content/repositories/snapshots",
  "JBoss" at "https://repository.jboss.org/nexus/content/repositories/thirdparty-releases"
)

initialCommands in consoleQuick := """
import scalala.scalar._;
import scalala.tensor.::;
import scalala.tensor.mutable._;
import scalala.tensor.dense._;
import scalala.tensor.sparse._;
import scalala.library.Library._;
import scalala.library.LinearAlgebra._;
import scalala.library.Statistics._;
import scalala.library.Plotting._;
import scalala.operators.Implicits._;
//
import scala.collection.{mutable => mut}
import scala.collection.JavaConversions._
import ru.circumflex.orm._
import ru.circumflex.core._
"""

//
// sxr
//

// addCompilerPlugin("org.scala-tools.sxr" %% "sxr" % "0.2.7")
// 
// scalacOptions <+= (scalaSource in Compile) { "-P:sxr:base-directory:" + _.getAbsolutePath }
like image 267
Yang Avatar asked Nov 19 '11 10:11

Yang


People also ask

What is provided dependency in sbt?

The sbt-assembly Plugin In that case, we can mark that dependency as “provided” in our build. sbt file. The “provided” keyword indicates that the dependency is provided by the runtime, so there's no need to include it in the JAR file.

Where are sbt dependencies stored?

If you have JAR files (unmanaged dependencies) that you want to use in your project, simply copy them to the lib folder in the root directory of your SBT project, and SBT will find them automatically.

How do I specify sbt?

Create or open your sbt project. In the Project tool window, in the source root directory, locate the build. properties file and open it in the editor. In the editor explicitly specify the version of sbt that you want to use in the project.

What does sbt publishLocal do?

The publishLocal action is used to publish your project to your Ivy local file repository, which is usually located at $HOME/. ivy2/local/ . You can then use this project from other projects on the same machine.


2 Answers

After blowing away not just ~/.ivy2 but ~/.m2 and ~/.sbt as well, everything worked again.

like image 70
Yang Avatar answered Sep 21 '22 10:09

Yang


Sometimes ivy cache entries get corrupted - simply remove ~/.ivy2/cache/org.scalatra/scalatra_2.9.1/jars/, and let SBT re-fetch the dependency from the remote repo. If it doesn't work, try to remove an entire cache directory (~/.ivy2/cache).

like image 28
Vasil Remeniuk Avatar answered Sep 19 '22 10:09

Vasil Remeniuk