IntelliJ sbt:错误地解析了依赖关系路径

时间:2014-09-09 13:09:48

标签: intellij-idea sbt

我遇到一个问题,IntelliJ(Windows 7上的IntelliJ 13.1.4)似乎在使用SBT的多模块设置中解决了错误的路径。

最初我使用sbt-idea插件生成IntelliJ项目文件,但每次加载项目时,我都会发现IntelliJ使用SBT再次刷新其依赖项,并在模块文件(.iml)中生成不正确的依赖路径。

相关部分(本节仅出错):

...
<orderEntry type="module-library">
   <library name="SBT: unmanaged-jars">
     <CLASSES>
       <root url="file://$USER_HOME$/.bnd/cache/https%3A%2F%2Fkate.rnd.hq.company.net%2Fartifactory%2Fsimple%2Fbundles-release-local%2Fcom.google.guava%2F14.0.1%2Fbundles" />

...

当IntelliJ使用'SBT'刷新项目时,会变成:

...
<orderEntry type="module-library">
  <library name="SBT: unmanaged-jars">
    <CLASSES>
      <root url="file://$MODULE_DIR$/../&#10;      ~/.bnd/cache/https%3A%2F%2Fcompany.net%2Fartifactory%2Fsimple%2Fbundles-release-local%2Fcom.google.guava%2F14.0.1%2Fbundles/com.google.guava.jar&#10;    " />
...

正如您所看到的,URL由于某种原因而搞砸了。 我能看到的是,在打开我的项目后,IntelliJ正在运行与SBT相关的任务: “刷新'project_name'SBT项目'等...... 这改变了路径。 (注意:当被问到时,我'忽略'检测到的sbt变化。)

我尝试直接在iml文件中修复这些路径,但IntelliJ会在刷新时继续覆盖我的更改。

到目前为止,可能有两个选项有助于取得进展:

1)我一直在尝试使IntelliJ仅依赖于基于或由sbt-idea插件生成的项目文件。为此,我不希望IntelliJ触发任何SBT解析或更改我的模块文件。

所以问题就变成了:我如何阻止IntelliJ刷新我的SBT项目?

在IntelliJ设置的SBT选项卡中,我看到一个配置,但我无法删除或禁用它。

2)我希望当然可以正确解析路径,但这可能是IntelliJ中的错误或者解释sbt任务的方式。更好的是,如果我可以使用开箱即用的SBT支持,但我不能指出哪里出了问题,这使得它很难。 欢迎提出这方面的任何建议。

更多背景信息:

我们的项目正在使用bnd与OSGi合作,我们创建了sbt任务以将其集成到我们的构建过程中。 在IntelliJ中使用SBT内置支持不适用于我们当前的设置(我忘了原因)但是在每个bundle / jar /组件级别我可以使用sbt-idea插件生成IntelliJ项目文件,这很好。 最近我们使用多模块设置将sbt中的支持转移到“root”级别,我遇到了这个问题。

亲切的问候,

汉斯

1 个答案:

答案 0 :(得分:0)

这在Intellij 14中得到修复。使用内置的sbt支持,我的项目不再需要任何工作了。