intellij / activator / sbt正在下载其他

时间:2015-06-30 04:17:12

标签: scala intellij-idea sbt ivy

我不是sbt的专家,所以我的问题可能有点像菜鸟,但我注意到比创建项目并使用sbt下载其依赖项时,如果我用intellij打开项目,所有的依赖关系再次重新加载,同样发生在逆orden intellij-> sbt和激活器..

关于sbt的我(差)知识比使用常春藤和依赖项下载到〜/ .ivy2 /文件夹...这是sbt正在下载我的deps,但似乎比intellij正在使用其他文件夹。

个人我不会使用这么多激活剂,但我想配置sbt和intellij使用相同的常春藤路径...

2)最近我使用sbt + publishLocal将finagle-postgre发布到我的本地常春藤,我可以在我的常春藤文件夹中查看

 /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 个答案:

答案 0 :(得分:5)

如果我们谈论IntelliJ在SBT / Activator已经下载后出现下载工件,那么事实证明它可能就是IntelliJ正在下载来源 - 它不是重新加载二进制工件,只是它们附带的源工件。

当您在Refreshing SBT project弹出窗口中查看Background Tasks任务时,这一点并不明显,因为完整的下载路径被截断,所以您会看到如下内容:

[info] downloading https://repo1.maven.org/maven2/org/apache/httpcompo...

..很自然地假设这是你在控制台上看到SBT下载的二元神器,但是如果你检查完整的日志,你可以看到完整的故事(去Help - > {{ 1}}并在文件浏览器中打开Show Log in files

您会看到下载的唯一工件以sbt.last.log结尾:

-sources.jar

```

如果您在执行$ grep repo1.maven.org /home/roberto/.IntelliJIdea2016.3/system/log/sbt.last.log [info] downloading https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6-sources.jar ... [info] downloading https://repo1.maven.org/maven2/com/googlecode/javaewah/JavaEWAH/0.7.9/JavaEWAH-0.7.9-sources.jar ... [info] downloading https://repo1.maven.org/maven2/org/pegdown/pegdown/1.2.1/pegdown-1.2.1-sources.jar ... [info] downloading https://repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3-sources.jar ... 时没有选中Sources复选框,则不会发生这些来源下载。

使用IntelliJ 2016.3.5和Scala插件v2016.3.9进行测试

答案 1 :(得分:2)

首先,激活器只是SBT本身的发射器,所以行为应该没有区别。

其次,IntelliJ默认情况下也使用~/.ivy2中的文件,如果你没有告诉它(例如,通过设置SBT_OPTS环境变量,但这取决于你的IntelliJ版本)。

如果您未明确设置项目中的scalaVersion,则可能会导致使用不同的scala版本(例如2.10.x与2.11.x)之间的差异。然后,每个工具都会下载默认配置的相应scala版本的相应库。

另一件事是IntelliJ将为每个依赖项下载源代码和javadoc jar,如果你在你的设置中启用它,它可能看起来像是再次下载依赖项。

注意,我在这里疯狂猜测,因为你没有包含你正在使用的程序的任何输出,所以很难说出真正的问题是什么是