首页 文章

intellij / activator / sbt正在下载之前由另一个下载的依赖项

提问于
浏览
16

我不是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 回答

  • 5

    如果我们已经被SBT / Activator下载了,那么事实证明它可能只是IntelliJ正在下载 sources - 它不会重新加载二进制工件,只是它们附带的源工件 .

    这不是 Background Tasks 弹出窗口中的 Refreshing SBT project 任务,因为完整下载路径被截断,所以你看到如下内容:

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

    ..很自然地假设这是你在控制台上看到SBT下载的二进制工件,但如果你检查完整的日志,你可以看到完整的故事(在文件浏览器中去 Help - > 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 ...
    
    
    如果在执行 `Import project` 时没有选中 `Sources` 复选框,则不会发生这些源下载 . 
    
    使用IntelliJ 2016.3.5和Scala插件v2016.3.9进行测试
  • 2

    首先,激活器只是SBT本身的 Launcher ,因此行为应该没有区别 .

    其次,IntelliJ默认情况下也会使用 ~/.ivy2 中的文件,如果您没有另外说明(例如,通过设置SBT_OPTS环境变量,但这取决于您的IntelliJ版本) .

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

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

    注意,我正在使用,所以很难说真正的问题是什么 .

相关问题