Я пытаюсь построить проект (с sbt 1.3.8), который имеет ряд зависимостей. Одной из таких зависимостей является net .sf.saxon: Saxon-HE: 9.9.1-7. Если я добавлю это в мою библиотеку Dependencies, она загрузится и все будет хорошо. Некоторые из моих зависимостей зависят от разных версий Saxon-HE. Я добавил зависимые переопределения для Saxon-HE и получаю правильную версию. Пока все хорошо.
У меня также есть локальная версия Saxon-EE. Это в другой банке, доступной только локально. Допустим, я хочу использовать эту версию. Я настроил флаг для переключения между HE и EE:
lazy val useSaxonEE = true
libraryDependencies ++= (
if (!useSaxonEE) {
Seq("net.sf.saxon" % "Saxon-HE" % saxonVersion)
} else {
List()
}
)
unmanagedJars in Compile ++= (
if (useSaxonEE) {
Seq(file(s"${baseDirectory.value}/eelib/$saxonVersion/saxon9ee.jar"))
} else {
Seq()
}
)
unmanagedJars in Runtime ++= (
if (useSaxonEE) {
Seq(file(s"${baseDirectory.value}/eelib/$saxonVersion/saxon9ee.jar"))
} else {
Seq()
}
)
unmanagedClasspath in Runtime ++= (
if (useSaxonEE) {
Seq(file(s"${baseDirectory.value}/eelib"))
} else {
Seq()
}
)
Я считаю (хотя мне трудно понять, как проверить), что это включает только одну из версий.
Однако из-за наличия транзитивных зависимостей от Saxon-HE я получаю оба jar-файла в моем пути к классам.
Как я могу заставить Saxon-HE покинуть мой путь к классу для компиляции и выполнения?