2014-06-17 15 views
7

tôi có một dự án Scala Chơi 2.3 rất cổ điển build.sbt cho với libraryDependencies thiết lập sau:Làm thế nào để loại bỏ sự phụ thuộc từ thư việnCác phụ thuộc đã được thêm vào bởi plugin?

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) 

Plugin PlayScala thêm specs2 phụ thuộc rằng "ô nhiễm" classpath và làm tốt nhập khẩu khó khăn hơn trong IDE.

Làm cách nào để xóa phụ thuộc từ libraryDependencies?

+0

Xem [play framework/framework/dự án/Dependencies.scala] (https://github.com/playframework/playframework/blob/ 17d037e06ebf135b06c5309e674a21b59781f140/framework/project/Dependencies.scala). Playframework là rất chặt chẽ cùng với specs2. –

+0

Có. Nhưng chỉ cho thử nghiệm. Mỗi lần sử dụng phụ thuộc là ánh xạ nó trong phạm vi kiểm tra. Vì vậy, nếu tôi không sử dụng Specs2 cũng như chơi-specs2 tích hợp nhưng chỉ scalatest với tích hợp chơi-scalatest, tôi tin rằng nó sẽ làm việc. Tôi nghĩ rằng sự phụ thuộc Specs2 vẫn còn đó bởi vì tích hợp scalatest là khá gần đây (kể từ 2.2.x) nhưng nó cung cấp tất cả những gì cần thiết. –

+1

Xem Loại trừ chủ đề Phụ thuộc Transitive tại: http://www.scala-sbt.org/0.13/docs/Library-Management.html –

Trả lời

9

tôi giải quyết một vấn đề tương tự bằng cách thêm dòng sau vào tôi 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

Cảm ơn, điều này đã làm việc cho tôi, nhưng không phải câu trả lời. –

6

Tôi đã thành công. Cảm ơn Venkat, tôi biết loại trừ, nhưng khi tôi không tự khai báo sự phụ thuộc, tôi không biết phải sử dụng nó ở đâu.

Nó rất đơn giản: redeclare bởi bản thân mình phụ thuộc thêm vào bởi các plugin:

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") 
) 

Có lẽ không phải là rất tao nhã, nhưng nó hoạt động.

+3

Tôi tò mò tại sao điều này bị giảm giá – Daenyth

Các vấn đề liên quan