2012-11-27 6 views
5

Ich habe folgende in build.sbt hinzugefügt:Warum gibt sbt nach erfolgreicher scalacheck-Lösung "Objekt scalacheck ist kein Mitglied der Paket-Organisation"?

libraryDependencies <<= scalaVersion { scala_version => Seq(
<other entries> 
    "org.scalacheck" %% "scalacheck" % "1.10.0" % "test", 
    <other entries> 
) 
} 

Nach compile das Projekt in sbt werden die Abhängigkeiten aufgelöst, wie erfolgreich in den Protokollen zu sehen ist:

[info] Resolving org.scalacheck#scalacheck_2.9.1;1.10.0 ... 
... 
Done updating 

Allerdings bekomme ich die folgende Fehler beim Kompilieren einer Datei.

object scalacheck is not a member of package org 
import org.scalacheck.Gen 
    ^ 

Was kann der Grund dafür sein?

Gibt es eine Möglichkeit, den Klassenpfad zu sehen, den sbt während der Task compile verwendet?

Sbt version: 0.11.2 
OS: Windows 7 
Scala version: 2.9.1 

Beachten Sie, dass das Projekt in ScalaIDE gut baut. (. Ich sbteclipse verwenden, um die Sonnenfinsternis .classpath-Datei zu generieren Die erzeugte .classpath hat richtigen Scalacheck-Eintrag.)

Antwort

14

Die Art und Weise die Abhängigkeit importieren macht Scalacheck nur für den Befehl test:

"org.scalacheck" %% "scalacheck" % "1.10.0" % "test" 

Sie verwenden sollen:

"org.scalacheck" %% "scalacheck" % "1.10.0" 

Aber warum verwenden Sie Scalacheck woanders als in Tests? Weitere Erläuterungen zum Testen in sbt finden Sie unter this link.

+2

Auch zu beachten: Verwenden Sie 'test: compile', um Sachen in' src/main/test' zu kompilieren. Diese Version wird die Abhängigkeiten finden, die mit '...%" test "' markiert wurden. – Dylan

+0

Danke! Es funktioniert jetzt. Einige der "Generatoren" und "Schrumpf" -Methoden, die ich schreibe, sind nicht-trivial. Daher behalte ich diesen Code zusammen mit der Klassenimplementierung in 'src'. – dips