11

私の IDEA プロジェクトでは、Scala モジュールは Java モジュールに依存しています。Scala モジュールをコンパイルしようとすると、scalac だけがトリガーされます。Java ソースと Scala ソースの両方をコンパイルします。

javac は Java ソースに対してはるかに高速であるため (私の Java プロジェクトは大きなプロジェクトです)、scalac で Scala モジュールのみをコンパイルしたいと考えています。 IDEA でモジュールごとに異なるコンパイラを使用するにはどうすればよいですか?


私の回避策は(Javaモジュールへの依存関係ごとに)次のとおりです。

  1. プロジェクト構成でモジュールの依存関係を削除する
  2. 適切なコンパイル出力ディレクトリ「MyJavaModule/target/classes」に依存関係を追加します

Mavenプロジェクトを再インポートするたびに、コンパイルを高速化するためにこれらすべてを繰り返す必要があるため、明らかに満足していません。誰かがより良い方法を知っていることを願っています。


明確化: SBT や Maven などのツールでは問題が解決しないことを強調したいと思います。コンパイルだけではありません。これは、Scala ワークシートや IDEA からの単体テストの実行などに必要な、IDEA でのコンパイルに関するものです。私の目標は、SBT のコンパイル速度で IDEA の機能 (構文の強調表示、インテリジェントな自動補完、自動インポートなど) をすべて実現することです。今では、長いコンパイル時間 (Java モジュールへの依存関係による) を許容するか、最低限の REPL と SBT でのテストを使用する必要があります。

4

3 に答える 3

4

Randall Schulz はコメントで適切な質問をしています: 「どのツールがコンパイルを行うかがなぜ重要なのですか?」 これまで、IDEA の優れた機能 (IDEA の Scala Console やその中からテストを実行します)。私は間違っていた。

実際、IDEA は他のツール (たとえば、優れた SBT など) によってコンパイルされたクラスを取得します。IDEA の便利な機能を使用する前に、すべてのクラスが最新であることを確認する必要があります。それを行う最良の方法は次のとおりです。

  1. バックグラウンドで継続的なインクリメンタル コンパイルを開始します (たとえば、SBT で「~ compile」を発行することにより)。
  2. IDEA の実行構成で「make」ステップを削除する

それで全部です!その後、別のウィンドウを切り替えることなく、IDEA のすべての優れた機能 (構文の強調表示とコード補完だけでなく、Scala コンソールでのすべての自動インポート、選択した単体テストの迅速な実行) を使用できます。それが今まで見逃していたワークフローです。この問題に関するすべてのコメントに感謝します。

于 2013-10-02T14:53:01.167 に答える
0

Apache Ivy や Apache Maven などの依存関係管理スイートの使用を検討する必要があります。次に、Java ソースを別のアーティファクトに入れ、Scala プロジェクトを Java プロジェクト アーティファクトに依存させます。

Maven ルートに行く場合は、Scala プラグインがあります。

于 2013-09-30T14:08:51.167 に答える