2017-02-12 4 views
0

저는 breeze-viz 0.3을 사용하고 있지만 최신 버전의 jfreechart를 사용해야합니다. 종속성 표에 따르면 https://mvnrepository.com/artifact/org.scalanlp/breeze-viz_2.10/0.3build.sbt의 강제 종속성 업데이트

기본값은 jfreechart 1.0.13이지만 기본값은 1.0.13이며 원하는 버전은 1,0.19입니다. 나는 선을

dependencyOverrides ++= Set(
    "org.jfree" % "jfreechart" % "1.0.19" 
) 

및 다시 실행 SBT 일식을 추가,하지만 여전히 나는이 프로젝트에 jfreedchart 1.0.13 있습니다. 1.0.19를 사용하려면 어떻게해야합니까?

는 여기에 내가 전에 스칼라 2.11에 문제가 있었다 전체 build.sbt

import AssemblyKeys._ 

name := "Simple Bayesian" 

lazy val commonSettings = Seq(
    version := "1.0", 
    organization := "com.myco", 
    scalaVersion := "2.10.4" 
) 

val sparkVersion = "2.0.0" 
val hbaseVersion = "1.0.0" 
val hadoopVersion = "2.4.0" 
val sprayVersion  = "1.3.2" 

lazy val app = (project in file(".")) 
    .settings(commonSettings: _*) 
    .settings(
    // your settings here 
) 

libraryDependencies <<= scalaVersion { 
    scala_version => Seq(
    // Spark and Spark Streaming 
    "org.apache.spark" %% "spark-core" % sparkVersion, 
    "org.apache.spark" %% "spark-mllib" % sparkVersion, 
    "org.apache.spark" %% "spark-streaming" % sparkVersion, 
    "org.apache.spark" %% "spark-streaming-kinesis-asl" % sparkVersion, 
    //"org.scalanlp" %% "breeze" % "0.12", 
    //"org.scalanlp" %% "breeze-natives" % "0.12", 
    "org.scalanlp" %% "breeze-viz" % "0.3", 
    "org.apache.commons" % "commons-lang3" % "3.3.2", 
    "org.apache.commons" % "commons-math3" %"3.2", 
    "org.apache.spark" %% "spark-hive" % sparkVersion, 
    "commons-lang" % "commons-lang" % "2.6", 
    "com.amazonaws" % "aws-java-sdk" % "1.0.002" excludeAll(ExclusionRule(organization = "javax.servlet")), 
    "org.json4s" %% "json4s-jackson" % "3.2.10", 
    "org.json4s" %% "json4s-native" % "3.2.10", 
    "com.amazonaws" % "amazon-kinesis-client" % "1.3.0", 
    "com.amazonaws" % "aws-java-sdk" % "1.9.13", 
    //"net.sf.opencsv" % "opencsv" % "2.3", 
    "log4j" % "log4j" % "1.2.17", 
    "io.spray"   %% "spray-json"  % sprayVersion, 
    //"gov.sandia.foundry" % "cognitive-foundry" % "3.4.3", 
    //"cc.mallet" % "mallet" % "2.0.8", 
    "com.github.scopt" %% "scopt" % "3.2.0"% "provided", 
    "com.github.kindlychung" % "sfreechart" % "0.1.2", 
    //"ca.umontreal.iro" % "ssj" % "2.5", 
    "joda-time" % "joda-time" % "2.3" 
) 
} 

libraryDependencies += "org.jfree" % "jfreechart" % "1.0.19" 

libraryDependencies += "org.biojava" % "jcolorbrewer" % "5.2" 

dependencyOverrides ++= Set(
// "com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4" 
    "org.jfree" % "jfreechart" % "1.0.19", 
    "org.biojava" % "jcolorbrewer" % "5.2" 
) 

resolvers += "typesafe repo" at " http://repo.typesafe.com/typesafe/releases/" 
resolvers += "jitpack" at "https://jitpack.io" 

EclipseKeys.withSource := true 

에게 있습니다. 지금 2.11로 업데이트해야합니까?

+0

My gosh. 주위에 sbt 전문가가 없습니까? – bhomass

+0

당신도 build.sbt를 공유 할 수 있습니까? 또한, 왜 궁금 해서요 2.10 dependecy – Mysterion

답변

1

jfreedchart 1.0.13을 볼 수 있지만 그 중 하나입니다. viz에 대한 종속성 그래프를 살펴보면 을 사용하려는 반면에 이전에 교차하지 않는 그룹 ID는이므로이 값은 "jfree" % "jfreechart" % "1.0.13"에 의존한다는 것을 알 수 있습니다. 그래서, 당신은이 작업을 수행하여, 클래스 패스에 반복하는 즉에서 이적 종속성을,

libraryDependencies += "org.jfree" % "jfreechart" % "1.0.19" 

을 추가하고 제외해야합니다

libraryDependencies += "org.scalanlp" % "breeze-viz_2.10" % "0.3" exclude("jfree", "jfreechart") exclude("jfree", "jcommon") 

주의 할,이 문제로 이어질 수의 경우 1.0.19는 1.0.13과 역 호환되지 않습니다.

+0

당신은 완전히 옳습니다. 1.0.13은 그룹 이름이 "jfree"이지만 1.0.19는 여전히 업데이트로 나열됩니다. 어떻게 그렇게 될수 있니? 그룹 이름이 다른 lib가 업데이트 된 버전으로 제공됩니까? 어쨌든, 두 버전은 같은 클래스 이름을 가지고 있고, 둘 다 가지고 있다면, 여전히 프로젝트에 충돌이있을 것입니다. – bhomass

+0

두 가지 모두 시도해 보았습니다. 예상했던대로 버전 충돌이 여전히 존재합니다. – bhomass

+0

실제로 그 문제를 해결하는 방법입니다. 기본 및 업데이트 된 버전이있는 경우 일반적으로 동일한 그룹 ID가 있으면 궁금합니다. 제외 방법은 적용되지 않을 것이라고 생각합니다. 이 경우 업데이트 된 버전을 얻으려면 어떻게해야할까요? – bhomass