2012-11-27 24 views
5

Dodałem następujące w build.sbt:Dlaczego sbt podaje "obiekt skalacheck nie jest członkiem paczki" po udanym rozwiązaniu skalacheck?

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

Po compile projektu w SBT, Zależności są rozwiązywane skutecznie jak widać w dziennikach:

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

jednak uzyskać następujące błąd podczas kompilacji jednego pliku.

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

Jaki może być tego powód?

Czy istnieje sposób, aby zobaczyć ścieżkę klas używaną przez sbt podczas zadania compile?

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

Należy pamiętać, że projekt generuje karę w ScalaIDE. (. Używam sbteclipse wygenerować plik zaćmienie .classpath Wygenerowany .classpath posiada odpowiedni wpis scalacheck.)

Odpowiedz

14

sposób importować zależność sprawia Scalacheck dostępna tylko dla polecenia test:

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

należy użyć:

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

Ale dlaczego używasz Scalacheck gdzie indziej niż w testach? Zobacz this link, aby uzyskać więcej wyjaśnień na temat testowania w sbt.

+2

Uwaga: użyj 'test: compile' do kompilowania rzeczy w' src/main/test'. Ta wersja znajdzie zależności, które zostały oznaczone testem "...%" " – Dylan

+0

Dzięki! Teraz działa. Niektóre z metod 'generators' i' shrink', które piszę, są nietrywialne. Dlatego trzymam ten kod razem z implementacją klasy w 'src'. – dips