2017-04-14 209 views
1

我在SBT中解決傳遞性依賴問題。SBT傳遞依賴性解決衝突

的錯誤是:

java.lang.NoSuchMethodError: com.vividsolutions.jts.index.strtree.STRtree.queryBoundary()Ljava/util/List 

Geospark1.14版本使用jts2geojsonhttps://github.com/bjornharrtell/jts2geojson/blob/master/pom.xml其中引用JTS,但這不包括在內,他們使用自定義的神器作爲替換。它被稱爲JTSPlus,它仍然存在於com.vividsolutions名稱空間中,並提供了一些其他方法,即上面缺少的方法。

最新geotools 17在版本1.13 https://github.com/geotools/geotools/blob/master/pom.xml#L752-L754

我需要使用jtsorg.datasyslab.jtsplus它提供額外的,但所需的功能我怎麼能做到這一點從替換geotools com.vividsolution.jts

在行家:

<dependency> 
      <groupId>org. geotools </groupId> 
      <artifactId> geotools </artifactId> 
      <version>YOURVERSION</version> 
      <exclusions> 
       <exclusion> 
      <groupId>com.vividsolutions</groupId> 
      <artifactId>jts</artifactId> 
       </exclusion> 
      </exclusions> 
</dependency> 

應該工作,但是對於SBT使用

libraryDependencies ++= Seq(
    "org.geotools" % "gt-main" % geotools, 
    "org.geotools" % "gt-arcgrid" % geotools, 
    "org.geotools" % "gt-process-raster" % geotools) 
    .map(_.excludeAll(
    ExclusionRule(organization = "com.vividsolution", artifact = "jts") 
)) 

沒有解決它。實際上,在使用dependencyGraph時,我可以看到SBT仍在將1.13版本的常規jts應用於整個項目。

如何修復依賴關係以正確排除原始JTS版本?

我build.sbt看起來像

lazy val geotools = "17.0" 

resolvers += "osgeo" at "http://download.osgeo.org/webdav/geotools" 
resolvers += "boundless" at "http://repo.boundlessgeo.com/main" 
resolvers += "imageio" at "http://maven.geo-solutions.it" 
resolvers += Resolver.mavenLocal 

libraryDependencies ++= Seq(
    "org.geotools" % "gt-main" % geotools, 
    "org.geotools" % "gt-arcgrid" % geotools, 
    "org.geotools" % "gt-process-raster" % geotools) 
    .map(_.excludeAll(
    ExclusionRule(organization = "com.vividsolution", artifact = "jts") 
)) 

libraryDependencies ++= Seq(
    "org.datasyslab" % "geospark" % "0.6.1-snapshot" 
) 

回答