我不是sbt的专家,所以我的问题可能是有点菜鸟,但我注意到,当我创建一个项目并使用sbt下载它的依赖项时,如果我用intellij打开项目,所有的依赖项都会重新加载,同样发生在逆orden intellij-> sbt和激活器..
关于sbt的我(差)知识比使用常 Spring 藤和依赖关系下载到〜/ .ivy2 /文件夹...这是sbt正在下载我的deps,但似乎比intellij正在使用其他文件夹 .
我个人并没有使用这么多激活剂,但我想配置sbt和intellij使用相同的常 Spring 藤路径......
2)最近我使用sbt publishLocal将finagle-postgre发布到我的本地常 Spring 藤,我可以在我的常 Spring 藤文件夹中查看
/home/yo/.ivy2/local/com.twitter/finagle-postgres_2.11/0.1.0-SNAPSHOT
但遗憾的是intellij无法解决此依赖关系,我尝试将此行添加到我的构建中
resolvers += Resolver.file("Local", file( Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
但似乎行不通
3)下载的路径依赖项与使用哪个sbt-launch.jar文件有关?我怎么知道sbt-lauch.jar文件现在正在使用sbt ...
多谢你们!
2 回答
如果我们已经被SBT / Activator下载了,那么事实证明它可能只是IntelliJ正在下载 sources - 它不会重新加载二进制工件,只是它们附带的源工件 .
这不是
Background Tasks
弹出窗口中的Refreshing SBT project
任务,因为完整下载路径被截断,所以你看到如下内容:..很自然地假设这是你在控制台上看到SBT下载的二进制工件,但如果你检查完整的日志,你可以看到完整的故事(在文件浏览器中去
Help
- >Show Log in files
并打开sbt.last.log
) .您将看到下载的唯一工件以
-sources.jar
结尾:首先,激活器只是SBT本身的 Launcher ,因此行为应该没有区别 .
其次,IntelliJ默认情况下也会使用
~/.ivy2
中的文件,如果您没有另外说明(例如,通过设置SBT_OPTS环境变量,但这取决于您的IntelliJ版本) .如果您未在项目中明确设置
scalaVersion
,则使用不同的scala版本(例如2.10.x与2.11.x)可能会产生差异 . 然后,每个工具都会下载默认配置的相应scala版本的相应库 .另一件事是IntelliJ将为每个依赖项下载源代码和javadoc jar,如果你在你的设置中启用了它,它可能看起来像是再次下载依赖项 .
注意,我正在使用,所以很难说真正的问题是什么 .