【问题标题】:How to access Ivy directly, i.e. access dependency reports or execute Ivy commands?如何直接访问 Ivy,即访问依赖报告或执行 Ivy 命令?
【发布时间】:2014-08-17 14:10:21
【问题描述】:

SBT 在底层使用 Ivy 进行依赖。 Ivy 可以生成大量的依赖报告。如何通过 SBT 访问它?

一般来说,如果我想通过 SBT 使用 Ivy 命令,我该怎么做?我可以从 SBT 依赖项生成 POM 吗?

更新:我的目标是调试和手动微调问题,而不是参与任何自动化任务

更新 2:为了调试,我想查看整个传递依赖链,而不仅仅是顶级依赖。

【问题讨论】:

  • 您想在您的任务/命令中使用这些报告,还是想用它来分析依赖关系?一般有一个ivySbt任务,可以返回IvySbt,可以用来访问Ivy,但是如果要手动分析依赖我想有更好的办法。
  • 你能检查一下我的回答是否对你有帮助吗?此外,您还可以查看sbt-dependency-graph

标签: scala sbt ivy


【解决方案1】:

调试依赖时有几个选项。

使用sbt-dependency-graph

您可以使用whatDependsOn <organization> <module> <revision> 命令查看依赖项的使用位置。

例如,我对org.apache.httpcomponents:httpcore:4.0.1 有传递依赖。要查看其中包含的内容,我可以使用whatDependsOn。

[play-slick-advanced] $ whatDependsOn org.apache.httpcomponents httpcore 4.0.1
[info] org.apache.httpcomponents:httpcore:4.0.1
[info]   +-oauth.signpost:signpost-commonshttp4:1.2.1.2
[info]   | +-com.typesafe.play:play_2.10:2.2.0
[info]   |   +-com.typesafe.play:play-java_2.10:2.2.0
[info]   |   | +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   | 
[info]   |   +-com.typesafe.play:play-jdbc_2.10:2.2.0
[info]   |   | +-com.typesafe.play:play-slick_2.10:0.5.0.8 [S]
[info]   |   |   +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   |   +-org.virtuslab:unicorn_2.10:0.4 [S]
[info]   |   |     +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   |     
[info]   |   +-com.typesafe.play:play-slick_2.10:0.5.0.8 [S]
[info]   |   | +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   | +-org.virtuslab:unicorn_2.10:0.4 [S]
[info]   |   |   +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   |   
[info]   |   +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]   |   
[info]   +-org.apache.httpcomponents:httpclient:4.0.1
[info]     +-oauth.signpost:signpost-commonshttp4:1.2.1.2
[info]       +-com.typesafe.play:play_2.10:2.2.0
[info]         +-com.typesafe.play:play-java_2.10:2.2.0
[info]         | +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]         | 
[info]         +-com.typesafe.play:play-jdbc_2.10:2.2.0
[info]         | +-com.typesafe.play:play-slick_2.10:0.5.0.8 [S]
[info]         |   +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]         |   +-org.virtuslab:unicorn_2.10:0.4 [S]
[info]         |     +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]         |     
[info]         +-com.typesafe.play:play-slick_2.10:0.5.0.8 [S]
[info]         | +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]         | +-org.virtuslab:unicorn_2.10:0.4 [S]
[info]         |   +-default:play-slick-advanced_2.10:1.0.1 [S]
[info]         |   
[info]         +-default:play-slick-advanced_2.10:1.0.1 [S]

只使用 sbt

我认为生成报告这一事实是一个很酷且被低估的功能。它们在target/resolution-cache/reports 目录中生成,在update 任务之后。

这是有关如何使用它们的分步指南。

清理项目

运行update 并转到target/resolution-cache/reports

使用 Firefox 打开任何 XML 文件

这部分有点棘手,出于某种原因,一些浏览器会呈现正确的报告,而另一些则会将文件作为 XML 文件读取。不知道为什么会这样,但可以肯定 Firefox 运行良好。您将打开哪个文件并不重要,因为您可以使用呈现页面中的选项卡在它们之间切换。

【讨论】:

    【解决方案2】:

    运行package任务,它会在target\scala*目录下生成POM。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 2021-02-07
      • 2019-06-30
      • 2013-09-08
      • 2011-05-14
      • 2011-03-10
      • 2014-05-13
      • 2016-10-16
      相关资源
      最近更新 更多