2014-06-17 15 views
7

Mam bardzo klasyczny build.sbt zagraj 2.3 projektu Scala z następującym ustawieniu: libraryDependenciesJak usunąć zależność od libraryDependencies, która została dodana przez wtyczkę?

libraryDependencies ++= Seq(
    "org.scalatestplus" % "play_2.10" % "1.1.0" % "test" 
    "org.mockito" % "mockito-core" % "1.9.5" % "test" 
) 

lazy val portal = (project in file(".")).enablePlugins(PlayScala) 

Wtyczka PlayScala dodaje specs2 zależność, że „zanieczyszcza” ścieżki klasy i sprawia dobre import trudniejszy w IDE.

Jak mogę usunąć zależność od libraryDependencies?

+0

patrz [playframework/Framework/projektu/Dependencies.scala] (https://github.com/playframework/playframework/blob/ 17d037e06ebf135b06c5309e674a21b59781f140/framework/project/Dependencies.scala). Playframework jest bardzo ściśle powiązany ze specyfikacją2. –

+0

Tak. Ale tylko do testu. Każde użycie w zależności polega na mapowaniu go w zakresie testowym. Więc jeśli nie używam specyfikacji Specs2 ani integracji play-specs2, ale tylko skalatest z integracją play-scalatest, uważam, że powinno działać. Sądzę, że zależność Specs2 nadal istnieje, ponieważ skalowalna integracja jest dość aktualna (od wersji 2.2.x), ale zapewnia wszystko, co jest potrzebne. –

+1

Zobacz temat Zablokuj przejściowe zależności na: http://www.scala-sbt.org/0.13/docs/Library-Management.html –

Odpowiedz

9

I rozwiązać podobny problem przez dodanie następujących do mojego Build.scala:

def excludeSpecs2(module: ModuleID): ModuleID = 
    module.excludeAll(ExclusionRule(organization = "org.specs2")) 

val main = Project(appName, file(".")) 
    .enablePlugins(play.PlayScala) 
    .settings(libraryDependencies ~= (_.map(excludeSpecs2))) 
+1

Dzięki, to zadziałało dla mnie, ale nie dla innych odpowiedź. –

6

Udało mi się. Dzięki Venkat, znałem wykluczenie, ale ponieważ sam nie zadeklarowałem zależności, nie wiedziałem, gdzie go użyć.

To było bardzo proste: redeclare sama zależność dodany przez wtyczki:

libraryDependencies ++= Seq(
    "org.scalatestplus" % "play_2.10" % "1.1.0" % "test", 
    "org.mockito" % "mockito-core" % "1.9.5" % "test", 
    "com.typesafe.play" %% "play-test" % play.core.PlayVersion.current % "test" exclude("org.specs2", "specs2-core_2.10") exclude("org.specs2", "specs2-junit_2.10") exclude("org.specs2", "specs2-mock_2.10") exclude("org.specs2", "specs2-matcher-extra_2.10") exclude("org.specs2", "") exclude("com.novocode", "junit-interface") exclude("com.google.guava", "guava") exclude("com.google.code.findbugs", "jsr305") 
) 

Może niezbyt eleganckie, ale działa.

+3

Jestem ciekawy, dlaczego jest to wycofane. – Daenyth

Powiązane problemy