在 sbt 项目中下载依赖源 jars 是很自然的,使用sbt gen-idea或 idea 的自动导入功能
但是如何下载我在其中声明的 sbt 插件源 jars project/plugins.sbt
主意
IDEA应该已经做到了这一点*。
当您导入项目并Download sbt sources签入首选项 > 构建、执行、部署 > 构建工具 > sbt时,它将运行updateSbtClassifierssbt 任务。
* 请阅读故障排除部分,因为存在几个已知问题。
sbt
如上所述,您可以运行以下 sbt 任务:
sbt> updateSbtClassifiers
Run Code Online (Sandbox Code Playgroud)
该命令有些特殊,因为它知道解析插件的分类器。它还使用该任务范围内的设置。请参阅有关sbt/sbt#3432的警告。
更长的路
重要的是要理解sbt 是递归的。
在 will 中声明的依赖关系build.sbt是为了正确的构建。
will中声明的依赖项project/plugins.sbt用于元构建。
当您刚刚运行时,updateSbtClassifiers它是在正确的构建上运行的,但是依赖项实际上是针对元构建的。所以我说这个任务有点特殊。
updateClassifiers另一种方法(可以实现不同的结果)是直接在元构建上运行任务。
首先切换到元构建:
sbt> reload plugins
Run Code Online (Sandbox Code Playgroud)
现在您处于元构建运行中:
sbt:project> updateClassifiers
Run Code Online (Sandbox Code Playgroud)
这将检索您的依赖项的src和doc(对于某些插件来说,它实际上可能不会这样做)。运行libraryDependencies以查看元构建的依赖关系。
为了回到正确的状态
sbt:project> reload return
Run Code Online (Sandbox Code Playgroud)
要获得方便的多合一命令,请运行:
sbt> updateClassifiers;updateSbtClassifiers;reload plugins;updateClassifiers;updateSbtClassifiers;reload return
Run Code Online (Sandbox Code Playgroud)
故障排除
下载失败
您可能会在 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] ::::::::::::::::::::::::::::::::::::::::::::::
Run Code Online (Sandbox Code Playgroud)
如果您查看上方,您将看到它尝试过的所有解析器。您应该会看到sbt-plugin-releases大多数 sbt 插件发布到的地方。有关更多详细信息,请参阅预定义解析器。
如果您没有看到它尝试过,sbt-plugin-releases那么您很可能遇到过sbt/sbt#3432。
updateSbtClassifiers没有使用正确的解析器。将以下内容添加到您的build.sbt文件中:
updateSbtClassifiers / dependencyResolution := IvyDependencyResolution((updateSbtClassifiers / ivyConfiguration).value)
Run Code Online (Sandbox Code Playgroud)
未附上来源
即使updateSbtClassifiers成功下载并解析, IDEAsrc也doc可能无法附加它们。
这似乎是sbt-struct 插件中的一个错误。有关详细信息,请参阅SCL-13619。
没有尝试下载
如果由于某种原因无法下载源代码(没有下载失败消息),请查看您的.ivy2/exclude_classifiers文件。我不完全确定这个文件的用途,但我确实知道 sbt 会排除这里的任何内容。
就我而言,它有很多我不想排除的东西,所以我删除了它,然后它就起作用了。删除的风险由您自行承担。
| 归档时间: |
|
| 查看次数: |
1748 次 |
| 最近记录: |