2016-01-06 4 views
0

У меня есть библиотека Scala основывается на SBT, который я публикую в Maven хранилище:Почему транзитивные зависимости не обнаружены?

organization := "com.mycompany" 
name := "mylib" 
version := "0.0.1" 
scalaVersion := "2.10.6" 
crossScalaVersions := Seq("2.10.6", "2.11.7") 
scalacOptions ++= Seq("-feature", "-unchecked", "-deprecation") 

libraryDependencies ++= Seq(
    "org.scalaj" %% "scalaj-http" % "2.2.0", 
    "org.json4s" %% "json4s-jackson" % "3.3.0", 
    "org.slf4j" % "slf4j-api" % "1.7.13", 
    "org.slf4j" % "slf4j-simple" % "1.7.13" 
) 

isSnapshot := true 
publishMavenStyle := true 
publishTo := { 
    Some(s3resolver.value("My Repo", s3("mybucket")).withMavenPatterns) 
} 

я включить эту библиотеку в другой проект:

libraryDependencies ++= Seq(
    "com.mycompany" %% "mylib" % "0.0.1" 
) 

Запуск sbt sbt-dependency dependencyTree только показывает:

[info] Done updating. 
[info] default:another-project_2.10:1.2 [S] 
[info] +-com.mycompany:mylib_2.10:0.0.1 
[info]  

Я не могу видеть все зависимости от третьей стороны: org.scalaj, org.json4s и т. Д.

EDIT: Кроме того, при создании сборки эти зависимости отсутствуют и у uberjar.

Файл .pom, размещенный в репозитории Maven, содержит все указанные зависимости, а ~/.ivy2/cache/com.mycompany/mylib_2.10/ivy-0.0.1.xml - нет.

Запуск sbt about в MYLIB/шоу:

[info] Loading global plugins from /home/michael/.sbt/0.13/plugins 
[info] Loading project definition from /home/michael/Dev/projects/mylib/project 
[info] Set current project to mylib (in build file:/home/michael/Dev/projects/mylib/) 
[info] This is sbt 0.13.9 
[info] The current project is {file:/home/michael/Dev/projects/mylib/}mylib 0.0.1 
[info] The current project is built against Scala 2.10.6 
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, com.typesafe.sbteclipse.plugin.EclipsePlugin, ohnosequences.sbt.SbtS3Resolver 
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.5 

Запуск sbt about в otherproject/показывает:

[info] Loading global plugins from /home/michael/.sbt/0.13/plugins 
[info] Loading project definition from /home/michael/Dev/projects/otherproject/project 
[info] Set current project to otherproject (in build file:/home/michael/Dev/projects/otherproject/) 
[info] Updating {file:/home/michael/Dev/projects/otherproject/}otherproject... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] This is sbt 0.13.9 
[info] The current project is {file:/home/michael/Dev/projects/otherproject/}otherproject 1.2 
[info] The current project is built against Scala 2.10.6 
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, com.typesafe.sbteclipse.plugin.EclipsePlugin, ohnosequences.sbt.SbtS3Resolver, net.virtualvoid.sbt.graph.DependencyGraphPlugin, sbtassembly.AssemblyPlugin 
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.5 

Вот вывод из публикации в локальный каталог:

[info] Loading global plugins from /home/michael/.sbt/0.13/plugins 
[info] Loading project definition from /home/michael/Dev/projects/mylib/project 
[info] Set current project to mylib (in build file:/home/michael/Dev/projects/mylib/) 
[info] Updating {file:/home/michael/Dev/projects/mylib/}mylib... 
[info] Packaging /home/michael/Dev/projects/mylib/target/scala-2.10/mylib_2.10-0.0.1-sources.jar ... 
[info] Done packaging. 
[info] Wrote /home/michael/Dev/projects/mylib/target/scala-2.10/mylib_2.10-0.0.1.pom 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] :: delivering :: com.mycompany#mylib_2.10;0.0.1 :: 0.0.1 :: integration :: Sat Jan 09 16:10:20 IST 2016 
[info] delivering ivy file to /home/michael/Dev/projects/mylib/target/scala-2.10/ivy-0.0.1.xml 
[info] Main Scala API documentation to /home/michael/Dev/projects/mylib/target/scala-2.10/api... 
[info] Packaging /home/michael/Dev/projects/mylib/target/scala-2.10/mylib_2.10-0.0.1.jar ... 
[info] Done packaging. 
model contains 9 documentable templates 
[info] Main Scala API documentation successful. 
[info] Packaging /home/michael/Dev/projects/mylib/target/scala-2.10/mylib_2.10-0.0.1-javadoc.jar ... 
[info] Done packaging. 
[info] published mylib_2.10 to /home/michael/Dev/projects/mylib/releases/com/mycompany/mylib_2.10/0.0.1/mylib_2.10-0.0.1.pom 
[info] published mylib_2.10 to /home/michael/Dev/projects/mylib/releases/com/mycompany/mylib_2.10/0.0.1/mylib_2.10-0.0.1.jar 
[info] published mylib_2.10 to /home/michael/Dev/projects/mylib/releases/com/mycompany/mylib_2.10/0.0.1/mylib_2.10-0.0.1-sources.jar 
[info] published mylib_2.10 to /home/michael/Dev/projects/mylib/releases/com/mycompany/mylib_2.10/0.0.1/mylib_2.10-0.0.1-javadoc.jar 
[success] Total time: 4 s, completed Jan 9, 2016 4:10:23 PM 

Что я делаю неправильно?

+0

Почему 'isSnapshot: = true', так как' "0.0.1" 'является стабильным, то есть версией без моментального снимка? –

+0

Это только для целей тестирования, чтобы разрешить публикацию артефактов издателя. Я попытался отключить его, хотя и не повезло – spektom

+0

Можете ли вы сделать 'sbt about' в обоих проектах? Какую версию sbt-dependency-graph вы используете? Можете ли вы использовать 'publishTo: = Some (Resolver.file (« файл », новый файл (« релизы »)))' вместо (not s3)? Пожалуйста, укажите результаты этого вопроса. (spoiler: он работает для меня) –

ответ

0

Файл build.sbt содержит строку

publishMavenStyle := true 

Согласно the documentation

POM порождается действием makePom и опубликованы в хранилище вместо плюща файл

Я могу предположить, что ivy.xml просто не генерируется, и o ne, который вы видите, является остатком предыдущего прогона, когда publishMavenStyle не был (пока) установлен.

Поскольку ваш артефакт опубликован в репозитории Maven, пытались ли вы удалить его из ~/.ivy2/cache/com.mycompany/mylib_2.10 и проверить результат поиска дерева зависимостей?

+0

Да, я попытался удалить '~/.ivy/cache/com.mycompany', а также' ~/.m2/repository/com/mycompany' (на всякий случай) проверка дерева зависимостей. Файл 'ivy-0.0.1.xml' все еще воссоздается без зависимостей внутри. – spektom

Смежные вопросы