Как транзитивные преобразователи работают с SBT?

У меня есть следующая сборка проекта:

import sbt._
import Keys._

object ProjectBuild extends Build {

  val buildVersion = "0.1-SNAPSHOT"

  val delvingReleases = "Delving Releases Repository" at "http://development.delving.org:8081/nexus/content/repositories/releases"
  val delvingSnapshots = "Delving Snapshot Repository" at "http://development.delving.org:8081/nexus/content/repositories/snapshots"
  val delvingRepository = if (buildVersion.endsWith("SNAPSHOT")) delvingSnapshots else delvingReleases

  lazy val root = Project(
    id = "basex-scala-client",
    base = file(".")
  ).settings(

    organization := "eu.delving",
    version := buildVersion,

    resolvers += "BaseX Repository" at "http://files.basex.org/maven",

    libraryDependencies += "org.basex"  %     "basex" % "7.2.1",
    libraryDependencies += "org.specs2" %%    "specs2" % "1.7.1" %  "test",

    publishTo := Some(delvingRepository),

    credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),

    publishMavenStyle := true
  )

}

Когда я включаю полученную библиотеку в другой проект, например:

    "eu.delving"         %% "basex-scala-client"         % "0.1-SNAPSHOT"

и я пытаюсь построить этот проект, я получаю сообщение об ошибке, сообщающее мне, что библиотека «org.basex% basex% 7.2.1», на которую ссылается этот проект, не может быть найдена.

Я должен пойти и добавить преобразователь в «клиентский» проект, чтобы найти библиотеку. Есть ли способ избежать этого?


person Manuel Bernhardt    schedule 23.05.2012    source источник


Ответы (2)


Транзитивных распознавателей нет, поэтому пользователю сборки необходимо знать все распознаватели всех зависимостей транзитивной библиотеки. Преимущество этого подхода заключается в том, что в проектах с открытым исходным кодом он поощряет публикацию проектов в одном из известных репозиториев, подключенных к известным распознавателям.

Для корпоративного использования вы можете запретить переход трафика в неизвестные места, представленные некоторыми зависимостями вниз по графику.

Чтобы поделиться настройками преобразователя внутри организации, вы можете создать подключаемый модуль для всей организации.

person Eugene Yokota    schedule 18.04.2014
comment
Просто убедитесь, что я правильно понимаю: когда я использую библиотеку, которая имеет зависимости в другом распознавателе, мне нужно вручную добавить распознаватели вверх по течению - не так ли? - person Manuel Bernhardt; 19.04.2014

Изменилась ли эта ситуация за последние 7 лет 10 месяцев? У меня есть зависимость транзитивной библиотеки в пользовательском репозитории. Для его непосредственного клиента я указываю преобразователь, и репозиторий записывается в файл pom клиента при публикации. Клиент клиента, похоже, не использует эту информацию для поиска переходной библиотеки. Мне нужно «добавить распознаватели вверх по течению вручную».

person Keith Alcock    schedule 09.04.2020