SBT транзитивный конфликт разрешения зависимостей
У меня есть проблема в SBT разрешении транзитивных зависимостей.
Ошибка:
java.lang.NoSuchMethodError: com.vividsolutions.jts.index.strtree.STRtree.queryBoundary()Ljava/util/List
Geospark
использует jts2geojson
https://github.com/bjornharrtell/jts2geojson/blob/master/pom.xml
какие ссылки JTS в версии 1.14
, но это исключено, и они используют собственный артефакт в качестве замены. Это называется JTSPlus
который до сих пор живет в com.vividsolutions
namespace и предоставляет некоторые дополнительные методы, т.е. тот, который отсутствует выше.
Последний geotools 17
использует jts
в версии 1.13
https://github.com/geotools/geotools/blob/master/pom.xml#L752-L754
Мне нужно заменить com.vividsolution.jts
из геоинструментов с org.datasyslab.jtsplus
который предлагает дополнительную, но необходимую функциональность, как мне этого добиться?
В мавене:
<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 все еще применяет обычные jts в версии 1.13 ко всему проекту.
Как я могу исправить зависимости, чтобы правильно исключить исходную версию 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"
)
1 ответ
Почему SBT НЕ исключает эти библиотеки, несмотря на использование исключений? упоминается в комментариях, что allDependencies
вместо libraryDependencies
должен быть использован. Я думаю, что это требуется из-за переходных проблем.