如何在常见的sbt项目中下载sbt插件源jar?

时间:2014-11-03 23:27:10

标签: scala sbt

使用sbt gen-idea或者想法的自动导入功能在sbt项目中下载依赖项源代码的本质

但是如何下载我在project/plugins.sbt

中声明的sbt插件源码jars

2 个答案:

答案 0 :(得分:2)

<强> IDEA

IDEA 已经执行此操作*。

导入项目并在{strong>偏好设置&gt;中签入Download sbt sources时构建,执行,部署&gt;构建工具&gt; sbt 然后它将运行updateSbtClassifiers sbt任务。

*请阅读疑难解答部分,因为此处有几个已知问题。

<强> SBT

如上所述,您可以运行以下sbt任务:

sbt> updateSbtClassifiers

这个命令有点特别,因为它知道解决插件的分类器。它还使用作用于该任务的设置。请参阅有关sbt/sbt#3432的警告。

更长的方式

了解sbt is recursive

非常重要

build.sbt中声明的依赖关系将用于正确构建

project/plugins.sbt中声明的依赖关系将用于元构建

当您运行updateSbtClassifiers时,它正在正确的构建上运行它,但是依赖项实际上是用于元构建。这就是为什么我说这个任务有点特别。

另一种方法(可以实现不同的结果)是直接在元构建上运行updateClassifiers任务。

首先切换到元构建:

sbt> reload plugins

现在您正处于元构建运行中:

sbt:project> updateClassifiers

这将为您的依赖项检索srcdoc(对于某些插件,它实际上可能不会这样做)。运行libraryDependencies以查看元构建的依赖关系。

回到正确的

sbt:project> reload return build run:

<强>疑难解答

下载失败

您可能会在sbt日志中看到它无法下载srcdoc。例如:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::              FAILED DOWNLOADS            ::
[warn]  :: ^ see resolution messages for details  ^ ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: rocks.muki#sbt-graphql;0.5.0!sbt-graphql.jar(doc)
[warn]  :: rocks.muki#sbt-graphql;0.5.0!sbt-graphql.jar(src)
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

如果您看上面就会看到它尝试过的所有解析器。您应该看到sbt-plugin-releases的一个,这是大多数sbt插件发布到的地方。有关详细信息,请参阅predefined resolvers

如果您没有看到它尝试sbt-plugin-releases,那么您很可能遇到sbt/sbt#3432

updateSbtClassifiers不使用正确的解析器。将以下内容添加到build.sbt文件中:

updateSbtClassifiers / dependencyResolution := IvyDependencyResolution((updateSbtClassifiers / ivyConfiguration).value)

未附加的来源

即使updateSbtClassifiers成功下载并解析了srcdoc IDEA,也可能无法附加它们。

这似乎是sbt-structure plugin中的一个错误。有关详细信息,请参阅SCL-13619

不尝试下载

如果由于某种原因,这不会下载源(没有失败的下载消息),那么请查看.ivy2/exclude_classifiers文件。我不完全确定这个文件的用途,但我知道sbt会排除这里的任何内容。

在我的情况下,它有很多我不想要排除的东西,所以我删除它然后它起作用了。删除风险自负。

答案 1 :(得分:0)

您可以使用reload plugins进入包含插件的项目。如果键入libraryDependencies,您可以(例如)查看插件依赖项列表。使用reload return返回正常的sbt控制台。

此处提供更多信息:Commands for managing the build definition