【发布时间】:2014-11-02 22:16:36
【问题描述】:
我遇到了一个问题,即 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$/../ ~/.bnd/cache/https%3A%2F%2Fcompany.net%2Fartifactory%2Fsimple%2Fbundles-release-local%2Fcom.google.guava%2F14.0.1%2Fbundles/com.google.guava.jar " />
...
正如您所见,由于某种原因,URL 被弄乱了。 我可以看到 IntelliJ 在打开我的项目后立即运行 SBT 相关任务: “刷新'project_name'SBT项目”等... 这改变了路径。 (注意:当被问到时,我“忽略”检测到的 sbt 更改。)
我尝试直接在 iml 文件中修复这些路径,但 IntelliJ 在刷新时继续覆盖我的更改。
到目前为止,可能有 2 个选项有助于取得进展:
1) 我一直试图让 IntelliJ 只依赖基于 sbt-idea 插件或由 sbt-idea 插件生成的项目文件。为此,我不希望 IntelliJ 触发任何 SBT 解析或更改我的模块文件。
所以问题变成了:如何阻止 IntelliJ 刷新我的 SBT 项目?
在 IntelliJ 设置的 SBT 选项卡中,我看到了一个配置,但我无法删除或禁用它。
2) 当然,我最好希望正确解析路径,但这可能是 IntelliJ 中的错误或解释 sbt 任务的方式。如果我可以使用开箱即用的 SBT 支持,那就更好了,但我无法指出哪里出了问题,这使得它变得困难。 也欢迎在这方面提出任何建议。
更多背景信息:
我们的项目正在使用 bnd 与 OSGi 一起工作,并且我们创建了 sbt 任务以将其集成到我们的构建过程中。 在 IntelliJ 中使用 SBT 内置支持不适用于我们当前的设置(我忘记了原因),但在每个包/jar/组件级别上,我可以使用 sbt-idea 插件生成 IntelliJ 项目文件,并且效果很好。 最近我们使用多模块设置将 sbt 中的 bnd 支持移至“根”级别,我遇到了这个问题。
亲切的问候,
汉斯
【问题讨论】:
标签: intellij-idea sbt