4

Leiningen プロジェクトを Intellij にインポートして、既存の Java および Scala モジュールと並べて配置しました。Clojure モジュールからこれらのモジュールの関数を呼び出したいのですが、この依存関係を定義する方法がわかりません。Project Settings -> Modules に移動しましたが、通常そこにある [Dependencies] タブが表示されないため、Leiningen プロジェクト ファイル以外の場所で依存関係を表現することは許可されていないと思いました (Leiningen プロジェクト エディターで遊んだことがあります)。そして、そこでこれを行う方法もわかりません...)。

Intellij がこのモジュールをどのように表示しているか知りたい場合は、.iml ファイルをご覧ください。

<?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" />

4

2 に答える 2

1

それで、私は最終的にこれを行うことができました... dAniが示唆したように、新しいClojureプロジェクトを作成することができました(今回はIntelliJを介して-以前は「lein new clj-test」を実行し、これをIntelliJにインポートしようとしました) 、Leiningen ビルド ファイルを作成し、そのビルド ファイルを処理してから、プロジェクト構造のモジュールの [依存関係] タブを確認します。

それでも、REPL はクラスを見つけることができませんでした。そのため、「通常の JVM プロセス」で nREPL を使用するように実行構成を編集する必要がありました。これにより、おそらく使用するクラスパスを持つモジュールを選択できるようになりました。

通常の JVM プロセス nREPL の構成を実行します

私自身の答えを受け入れる人になるのは嫌いです(特にこれにはいくつかの制限があるため...最終的にGorilla REPLでこれを使用したいので、おそらくそのための別の戦略を考案するでしょう)が、これは元の質問にかなり答えると思いますまあ、それが誰かを助けることを願っています。基本的に、上記の戦略が行っているのは、依存関係の解決に Leiningen を使用することですが、実際には REPL には使用しないため、Leiningen の依存関係はクラスパスで利用できますが、REPL は IntelliJ を介して別の方法で起動されます。

于 2016-02-02T01:03:55.023 に答える