IntelliJ Ideaを使用してSBTプロジェクトを作成する方法


146

Scala / LiftWeb / Sbtの開発を始めたばかりで、IntelliJ IdeaにSbtプロジェクトをインポートしたいのですが。実際、私は2つの異なる方法でプロジェクトをインポートできました。

1)Mavenを使用。私はMavenプロジェクトを作成し、その上でSbtプロジェクトを作成してから、IntelliJにインポートしました。その後、Jetty Serverを簡単に起動、停止、その他の操作を行うことができました。しかし、それは私が望んでいることではありません。同じことをしたいのですが、Mavenフリーです。それは私につながる

2)Eclipseを使用。そこで、新しいSbtプロジェクトを作成しました(私が書いた小さなスクリプトを使用して、SbtプロジェクトをWebProjectとして構成しました)。次に、sbt-eclipsifyプラグインを使用してプロジェクトをEclipse用に「変換」し、IntelliJにインポートしました(既存のソース-> Eclipse)。しかし、問題はここから始まりました。IntelliJSbtプラグインを機能させることができません。

誰かがこれを手伝ってくれる?


迅速な回答が必要な場合、または緊急の要件がある場合は、githubにアクセスして簡単なscalaプロジェクトを見つけてください。ダウンロードしてIDEにインポートします。scalaプロジェクトにアクセスできるはずです。ハッピータイム
ユーザーが

回答:


170

プロジェクトの作成方法には3つの基本的な方法があります。最新バージョンのIntelliJはそのままsbtプロジェクトをインポートできます。それ以外の場合は、sbtプラグインを使用してIntelliJプロジェクトを生成するか、IntelliJ Scalaプラグインを使用してsbtプロジェクトを作成できます。基本的な機能は両方のソリューションを使用してすぐに機能します。一部の複雑なビルドには問題がある可能性があるため、他のツールを試して、機能するかどうかを確認してください。

IntelliJ

IntelliJ IDEAは最近非常に良くなっています。現在のバージョン(14.0.2)は、Scalaプラグインを使用して、追加設定なしでsbtプロジェクトをサポートします。プラグインをインストールするだけで、Scala / sbtプロジェクトを問題なく開くことができるはずです。

設定のプラグインにあるScalaプラグイン

プラグインを使用して、sbtプロジェクトをポイントするだけで、IDEAはそのようなプロジェクトを開くためのウィザードを提供します。

sbtプロジェクトのインポート

IntelliJ Scalaプラグイン

IntelliJプラグインは、http: //confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEAにあり ます。または、[設定]-> [プラグイン]ダイアログを使用してIDEから直接インストールできます。その後、ファイル->新規プロジェクト-> Scala-> SBTベースを実行できます。IntelliJは基本的なbuild.sbtを生成し、必要な依存関係をダウンロードしてプロジェクトを開きます。

SBTプラグイン

sbtファイルに基づいてアイデアプロジェクトを生成するSBTプラグインは、https//github.com/mpeltonen/sbt-ideaにあります。

SBT 12.0以降および13.0以降

単にに追加addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")してくださいbuild.sbt。追加のリゾルバーは必要ありません。

古いバージョン:

SBT 0.11+

次の行を作成して~/.sbt/plugins/build.sbtORに追加しますPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

gen-ideaIDEAプロジェクトファイルを作成するには、sbtで使用します。

デフォルトでは、sbtの分類子(つまり、ソースとjavadocs)とライブラリの依存関係が見つかるとロードされ、IDEAプロジェクトファイルに参照が追加されます。それらをダウンロード/参照したくない場合は、commandを使用してくださいgen-idea no-classifiers no-sbt-classifiers


SBT 0.10.1 (プラグインの作者によると、0.10.0 は機能しません!)

以下の行を作成して〜/ .sbt / plugins / build.sbtに追加します。

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

gen-ideaIDEAプロジェクトファイルを作成するには、sbtタスクを使用します。

デフォルトでは、sbtの分類子(つまり、ソースとjavadocs)とライブラリの依存関係が見つかるとロードされ、IDEAプロジェクトファイルに参照が追加されます。それらをダウンロード/参照したくない場合は、commandを使用してくださいgen-idea no-classifiers no-sbt-classifiers


SBT 0.7

これを使用するには、sbtシェルからこれを実行するだけで、プラグインが外部プログラムとして使用されます。

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

必要に応じて、プロジェクト定義に特性を追加することもできます。

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}

4
私はこのプラグインに完全に変換しています。プロジェクトのビルドをSBTに委任し、IDEAのツールウィンドウからインタラクティブにSBTを使用できるidea-sbt-pluginと組み合わせて使用​​します。sbt-ideaのバージョン0.2.0-SNAPSHOTは、いくつかの小さな煩わしさ、つまり親プロジェクトの作成、および手動のIntelliJ設定の保持を修正します。
レトロニム

このプラグインをありがとう。ほんとにヘルパー!
ksemeks 2010年

4
回答を取り消します。これは素晴らしいプラグインで、今は毎回使用しています。
Synesso、2010

1
私は、SBT 0.7.x +とは全く異なっているSBT 0.10.0のための答え、追加stackoverflow.com/questions/4250318/...
opyate

opyateに感謝、私はあなたのコメントに従って私の投稿を更新しました
スティーブ

11

今のところ私はこれを手作業で行っています とても簡単です。

  1. SBTでプロジェクトを作成する
  2. 同じルートパスで新しいIDEAプロジェクトを作成する
  3. 同じルートパスでモジュールを作成する
  4. src / main / scalaをモジュールのsrcパスとして設定します
  5. モジュールのテストパスとしてsrc / test / scalaを設定します
  6. ライブラリとしてscala-library.jarを追加します
  7. libが存在する場合は、モジュールライブラリ内のjarディレクトリとして追加します。
  8. lib_managed / compile(存在する場合)をモジュールライブラリ内のjarディレクトリとして追加します
  9. モジュールライブラリ内のjarディレクトリとしてlib_managed / test(存在する場合)を追加します

それは記憶からです。自動化されたほうがいいのですが、今ほど大したことではありません。

注意点:上記のアプローチは、デフォルトでlib_managedに依存関係をコピーしないため、新しい学校のsbt、つまりバージョン0.10以降ではうまく機能しません。あなたは付け加えられます

retrieveManaged := true

build.sbtに追加して、依存関係をlib_managedにコピーします。


しかし、プロジェクト(突堤)をIntelliJから開始しますか、それとも端末から開始しますか?IDEからプロジェクトランチャー/コンパイラーをセットアップできません。
ksemeks 2010年

もう1つ:私はあなたが書いたすべてのことをしましたが、IntelliJはインポート「import net.liftweb.LiftRules」に対して「シンボルneを解決できません」と言っています
ksemeks

なんとかインポートを回避できた。/ lib_managedの代わりに/ lib_managed / compileをインポートする必要がありました
ksemeks

6
回答を取り消しました!sbt-ideaプラグインを使用します。
Synesso、

7

Tempus fugitとIntelliJ IDEAは最近非常に良くなっています。やっぱり2015年ですね。

そうは言っても、IntelliJ IDEA 14.0.2の最新バージョンは、Scalaプラグインを使用して追加設定なしで sbtプロジェクトをサポートします。プラグインをインストールするだけで、それほど問題なくScala / sbtプロジェクトを開くことができるはずです。

設定のプラグインにあるScalaプラグイン

執筆時点では1.2.67.6.EAPのプラグインのEarly Accessバージョンを使用しています。

プラグインを使用してsbtプロジェクトを指定するだけで、IDEAはそのようなプロジェクトを開くためのウィザードを提供します。

sbtプロジェクトのインポート

sbt 0.12.4のsbt-ideaについて

sbt 0.12.4の場合、システム全体のプラグイン構成ファイル- ~/.sbt/plugins/build.sbtまたはPROJECT_DIR/project/plugins.sbt-には次の行が必要です。

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

sbt gen-ideaIDEAプロジェクトファイルを生成するために実行します。

読むSBT-アイデアのプラグインのウェブサイトより最新の情報のために。IntelliJ IDEA 13へのsbtベースのプロジェクトのインポート(sbt-idea、Scala 2.11、およびsbt 0.12を使用)という私のブログエントリも役立ちます。


新しいプロジェクトを作成するとき。sbt gen-ideaの後、プロジェクトは空になります。構造はなく、srcではなく、テストフォルダー。そして、それはラメが..です
SES

どのようにプロジェクトを作成しましたか?中のディレクトリ構造とファイルは何ですか?
Jacek Laskowski、2013年

空っぽです。手作業で "main / scala / src"を作成しなければなりませんでした。しかし、私はそれとともに生きることができます。
SES

sbtプロジェクトをブートストラップする手段としてgithub.com/n8han/giter8を使用したいかもしれません。sbtはメインプロジェクトとして空のディレクトリを持つことができ、main / scala / srcは必要ありません -sbtがメインディレクトリにScalaファイルを置いてそれらを選択するだけです。
Jacek Laskowski

5

sbt 0.7の場合

このページの他の場所にある回答を参照してください

sbt 0.10の場合

Ismaelのsbt-ideaをクローンしてビルドします。

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

sbtプラグインlibディレクトリがまだない場合は作成します

mkdir -p  ~/.sbt/plugins/lib

手順1で作成したjarをここにコピーします

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

sbtを再起動またはリロードすると、実行できますgen-idea(またはgen-idea with-classifiers、ソースとjavadocがintelliJでも必要な場合)。

出典:メッセージグループに関するタッカーの提案

IntelliJ IDEA 13.x自体

現在、IDEAでSBTベースのプロジェクトを開くことができます。必要なプロジェクトとモジュールを作成し、ビルドスクリプトを変更するたびに依存関係を最新に保ちます。


2

私はこのすべての苦痛を経験しました。私は許容できる環境を整えるために何日も費やし、ENSIME、SBT、およびJRebelがしばらくの間私の開発環境になるとの結論に達しました。はい、それはEmacsに戻りますが、ENSIMEはそれをリファクタリング、デバッグのサポート、ナビゲーションなどで少しまたはアイデアに変えます。Eclipse(Java)ほど良くはありませんが、scalaプラグインがうまく機能しない限り、それは最高です。

Scala開発環境が問題を解決するまで(EclipseまたはIntelliJ)、気にするつもりはありません。バギーすぎます。

リフトサイトの議論を見てください。

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

そのスレッド内には、IntelliJのHOWTOへのリンクがありますが、多少は機能しますが、あまり役に立たない多くの問題があります。

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/


もう読んだ。この記事ではMavenを使用しています。私は今、svenで、mavenなしで、同じことをやろうとしています。
ksemeks 2010年

IntelliJで使用できるようにプロジェクトを設定できますが、sbtコンパイラー/ランチャーを機能させることができません。
ksemeks 2010年

ENSIMEに関する限り:簡単に作業できますか?一度試しましたが、emacsで作業したことがなかったので、少し大変でした。emacsでの作業は前提ですか?
ksemeks 2010年

次のリンクをクリックすると、SBTのセットアップが表示されます。これは私にとってはうまくいきましたが、SBTとIntelliJを統合されていない方法で操作することは、実際にはSBTを使用したENSIMEがはるかに自然な2つの別個のツールを使用することに似ています。heikoseeberger.blogspot.com/2010/08/...
andyczerwonka

2

答えは2014年のものです。IntelliJ13.xでは、プラグインScalaはバージョン0.41.2です(SBTが含まれています)。

私のSBTのバージョンは0.13.5です(ターミナル: sbt sbtVersion

プロジェクトのルートフォルダーに移動し、ターミナルに入力します

sbt idea

2つの新しい隠しフォルダー.idea.idea_modulesが表示されます。

次に、IntelliJで、[ファイル]> [開く]>プロジェクトを選択します。問題なくプロジェクトが開くはずです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.