Исключить JAR из компиляции и времени выполнения в SBT - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь построить проект (с 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 покинуть мой путь к классу для компиляции и выполнения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...