首页 文章

如何判断Cursive Clojure模块依赖于本地Java / Scala模块?

提问于
浏览
3

我将一个Leiningen项目导入Intellij,与一些现有的Java和Scala模块并列 . 我想从我的Clojure模块调用那些模块中的函数,但我不确定如何定义这种依赖 . 我去了项目设置 - >模块和通常缺少的“依赖关系”选项卡,让我相信我不允许在Leiningen项目文件之外的任何地方表达依赖关系(我和Leiningen项目编辑器一起玩过)并且无法弄清楚如何在那里做到这一点...) .

这是.iml文件,如果有人好奇Intellij如何查看这个模块 .

<?xml version="1.0" encoding="UTF-8"?>
<module cursive.leiningen.project.LeiningenProjectsManager.displayName="testproject:0.1.0-SNAPSHOT" cursive.leiningen.project.LeiningenProjectsManager.isLeinModule="true" type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/dev-resources" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/resources" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
  <excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Leiningen: clojure-complete:0.2.3" level="project" />
<orderEntry type="library" name="Leiningen: org.clojure/clojure:1.6.0" level="project" />
<orderEntry type="library" name="Leiningen: org.clojure/tools.nrepl:0.2.10" level="project" />

2 回答

  • 1

    我开发了草书 . 我怀疑现在可能没有一个好的解决方案 . 我将查看代码并查看是否可以找到一种方法来实现它,但它需要了解Maven,Gradle或SBT(在您的情况下)如何在内部表示模块 . 我今天会试着看看这个并告诉你 . 我实际上不知道在IntelliJ中是否有可能让Maven项目依赖于SBT项目,例如Gradle项目 .

    与此同时,发布到您当地的仓库是我能想到的唯一解决方法 . 对不起,我知道这很笨重 .

    IntelliJ在“普通”项目和IntelliJ项目之间的观点没有区别,只是Cursive会在每次同步时重写大量模块配置,因为理论上配置应该由Leiningen管理 . 这或多或少是Maven集成的工作原理 .

  • 1

    所以,我最终能够做到这一点......正如dAni建议的那样,我能够创建一个新的Clojure项目(通过IntelliJ这次 - 之前我做了“lein new clj-test”然后尝试将其导入IntelliJ) ,创建一个Leiningen构建文件,处理该构建文件,然后在Project Structure中查看该模块的Dependencies选项卡 .

    仍然,REPL找不到课程 . 因此,我必须编辑Run配置以在“普通JVM进程”中使用nREPL,这样我就可以选择我可能使用的类路径的模块 .

    Run config for normal JVM process nREPL

    讨厌成为接受我自己的答案的人(特别是因为这有一些限制......我想最终将它与Gorilla REPL一起使用,所以可能会为此设计一个不同的策略)但我认为这回答了原来的问题相当漂亮好吧,希望它有所帮助 . 我认为上面的策略基本上是使用Leiningen进行依赖性解析而不是实际上用于REPL,所以Leiningen的依赖关系可以在类路径上使用,但是REPL是通过IntelliJ以其他方式启动的 .

相关问题