使用IntelliJ

时间:2017-05-19 04:25:45

标签: scala intellij-idea sbt

我正在处理一个图书馆和一个并行依赖它的应用程序,我想分别发布它们。由于我经常编辑两者,我希望能够在IntelliJ中加载它们,以便"转到定义"工作正常(即将我带到另一个项目的可编辑源),重建将包含在另一个模块中进行的更改,而无需重新运行sbt publishLocal并刷新其他项目。

我设法让IntelliJ通过手动添加多个SBT项目并手动编辑它们的依赖项来实现这一点,但是一旦我添加了库依赖项并刷新了SBT定义,我的编辑就消失了。

如何让IntelliJ了解另一个项目的libraryDependency应该被实现并作为模块导入,而不是从本地maven存储库导入?

1 个答案:

答案 0 :(得分:0)

我也在寻找解决您问题的方法。但是,到目前为止,我希望可以提供一种可以接受的解决方法。

您可以从项目中临时删除Ivy2依赖项,并将其定义为sbt中的项目。例如,如果您的 OtherProject 与当前项目位于同一目录中,则可以按如下所示添加它:

Get-Acl : Cannot find path '\\SERVER\Work_Block_A\MDX1112 - Xxxxxx Xxxxxxx 
Xxxxxxxxxx' because it does not
exist.
At C:\Users\felipe.sa\Desktop\Script\NewProjectFolder\NewProject-WP_- 
_ProductionV1.ps1:125 char:8
+ $acl = Get-Acl $NewNetworkPath
+        ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (:) [Get-Acl], ItemNotFoundException
+ FullyQualifiedErrorId : 
GetAcl_PathNotFound_Exception,Microsoft.PowerShell.Commands.GetAclCommand

You cannot call a method on a null-valued expression.
At C:\Users\felipe.sa\Desktop\Script\NewProjectFolder\NewProject-WP_- 
_ProductionV1.ps1:128 char:1
+ $acl.SetAccessRule($rule)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

然后,您需要使用 dependsOn 指定对 OtherProject 的依赖关系:

lazy val otherProject = RootProject(file("../OtherProject")) 
然后

IntelliJ将 OtherProject 导入到当前的工作区中,您可以在这两者上进行工作。

在提交之前,您必须将依赖关系还原为Ivy2规范。