使用sbt gen-idea
或者想法的自动导入功能在sbt项目中下载依赖项源代码的本质
但是如何下载我在project/plugins.sbt
答案 0 :(得分:2)
<强> IDEA 强>
IDEA 应已经执行此操作*。
导入项目并在{strong>偏好设置&gt;中签入Download sbt sources
时构建,执行,部署&gt;构建工具&gt; sbt 然后它将运行updateSbtClassifiers
sbt任务。
*请阅读疑难解答部分,因为此处有几个已知问题。
<强> SBT 强>
如上所述,您可以运行以下sbt任务:
sbt> updateSbtClassifiers
这个命令有点特别,因为它知道解决插件的分类器。它还使用作用于该任务的设置。请参阅有关sbt/sbt#3432的警告。
更长的方式
非常重要 build.sbt
中声明的依赖关系将用于正确构建。
project/plugins.sbt
中声明的依赖关系将用于元构建。
当您运行updateSbtClassifiers
时,它正在正确的构建上运行它,但是依赖项实际上是用于元构建。这就是为什么我说这个任务有点特别。
另一种方法(可以实现不同的结果)是直接在元构建上运行updateClassifiers
任务。
首先切换到元构建:
sbt> reload plugins
现在您正处于元构建运行中:
sbt:project> updateClassifiers
这将为您的依赖项检索src
和doc
(对于某些插件,它实际上可能不会这样做)。运行libraryDependencies
以查看元构建的依赖关系。
回到正确的
sbt:project> reload return build run:
<强>疑难解答强>
下载失败
您可能会在sbt日志中看到它无法下载src
或doc
。例如:
[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
成功下载并解析了src
和doc
IDEA,也可能无法附加它们。
这似乎是sbt-structure plugin中的一个错误。有关详细信息,请参阅SCL-13619。
不尝试下载
如果由于某种原因,这不会下载源(没有失败的下载消息),那么请查看.ivy2/exclude_classifiers
文件。我不完全确定这个文件的用途,但我知道sbt会排除这里的任何内容。
在我的情况下,它有很多我不想要排除的东西,所以我删除它然后它起作用了。删除风险自负。
答案 1 :(得分:0)
您可以使用reload plugins
进入包含插件的项目。如果键入libraryDependencies
,您可以(例如)查看插件依赖项列表。使用reload return
返回正常的sbt控制台。