web-dev-qa-db-ja.com

PlayフレームワークでIntelliJを使用する方法とScala

Playフレームワーク2.11アプリケーションでIntelliJを使用しようとしています。

Play Framework 2プラグインとIntelliJ用のScalaプラグインをインストールしました。

Playアプリケーションを作成しました。私はIntelliJで仕様2テストの作成と実行に苦労しています。実行構成では、仕様2テストの実行時に最初に「make」を実行するように指示されていますが、テストクラスが生成されているようには見えません。仕様が見つからなかったと私に言い続けます。ファイルシステムを見ると、target/test-classesにコードはなく、ディレクトリは空です。さらに、少なくともPlayコンソールの実行と比較すると、ビルドの実行には長い時間がかかるようです。

人々がPlay with IntelliJをどのように使用しているかを知りたかった。 IntelliJをエディターとして使用し、Playコンソールですべてを実行しますか?

IntelliJでアプリケーションテストを実行する(テストクラスを実行する)方法はありますか?

Playコンソールの実行と〜test-only test = xxx.Specの実行に問題はありませんでした。通常、かなり高速です。

Specs2テストを実行しようとすると、IntelliJで例外が発生します。

Exception in thread "main" Java.lang.reflect.InvocationTargetException
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:601)
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.Java:130)
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.Java:76)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)
Caused by: Java.lang.RuntimeException: can not create specification: test.ApplicationSpec
    at scala.sys.package$.error(package.scala:27)
    at org.specs2.specification.SpecificationStructure$.createSpecification(BaseSpecification.scala:96)
    at org.specs2.runner.ClassRunner.createSpecification(ClassRunner.scala:64)
    at org.specs2.runner.ClassRunner.start(ClassRunner.scala:35)
    at org.specs2.runner.ClassRunner.main(ClassRunner.scala:28)
    at org.specs2.runner.NotifierRunner.main(NotifierRunner.scala:24)
    ... 11 more
34
noplay

更新:IntelliJ IDEAの新しいバージョンでは、play/activatorからモジュールを作成する必要がなくなりました。 IntelliJ IDEAはSBTプロジェクトを非常によくサポートします。存在する場合は、プロジェクト内のすべてのアイデア関連ディレクトリを削除します。IntelliJでIDEA [ファイル- > build.sbtファイルを開いて選択します。


IntelliJ IDEAはPlay Framework 2にうまく統合されています。時々ジャムしますが、ほとんどの場合実行されます。テストを実行(単一、すべて)、開始またはデバッグするために使用します。アプリケーションと私のコードを編集します(o;そして、これはIDEからsbtコンソールなしで。

最も重要な手順を含む短いチュートリアルです。現在、IntelliJ IDEA 12.1を最新のPlay Framework 2およびScalaプラグインで使用しています。

1。新しいアプリケーションを作成する

play new myapp

2。IDEモジュールを作成します

プレイコンソールを起動します。

cd newapp
play

モジュールを作成します。

idea with-sources=yes
exit

。IDEの構成

  1. 新しく作成したプロジェクトを開きます
  2. モジュール設定を開きます(プロジェクトを選択してF4を押します)
  3. Scalaライブラリをプロジェクトに追加します
    1. Modules-> myapp-> Dependenciesを選択します
    2. プラスアイコンを押して、Library(2)を選択します
    3. Scala 2.10.0 Project Libraryを追加
  4. Scala Facet でコンパイラライブラリを選択します。
    1. Facets-> Scala(myapp)を選択します
    2. コンパイラライブラリをScala 2.10.0
  5. エラーを修正してください
    1. Modules-> myapp-build-> Dependencies-> scala-2.9.2を選択し、マイナスアイコンを押します
    2. Libraries-> Scala 2.9.2を選択し、マイナスアイコンを押します
  6. myapp-buildモジュールの出力パスを修正します。
    1. Modules-> myapp-build-> Pathsを選択します
    2. classes出力パスに追加します(X:\ projects\myapp\project\target\scala_2.9.2\classes)
    3. test-classesテスト出力パスに追加します(X:\ projects\myapp\project\target\scala_2.9.2\test-classes)

4。テストを実行する

テストディレクトリの下でApplicationSpecを選択し、Run 'ApplicationSpec'をクリックしますコンテキストメニュー。コンパイルされたテンプレートが見つからないというエラーが表示されるはずです。これは、IDEはテンプレートをコンパイルしませんが、これはアプリケーションを1回実行することで実行できます。また、ポイント5に従ってテストを再実行してください。

5。アプリケーションの実行

コントローラーを選択して、コンテキストメニューからPlay 2アプリの実行をクリックします。これにより、アドレスでアプリケーションが開始されます:http://localhost:9000/

6。依存関係の更新

アプリケーションの依存関係を更新する場合は、IDEにこの変更について伝える必要があります。また、play updateコマンドを実行した後IDEを閉じて、プロジェクトディレクトリからいくつかのファイルを削除する必要があります。play ideaコマンドは、ファイルを削除する前に、playプロジェクトに二重の依存関係を取得します。

次の手順を実行して、依存関係を更新します。

  1. Playコンソールからupdateタスクを実行します
  2. .idea_modulesおよび.idea/librariesディレクトリ
  3. idea with-sources=yesプレイコンソールのコマンド
  4. ステップ3を再度実行します
56
akkie

Playコンソールには、 sbt-idea という名前のsbtプラグインのフォークが含まれています。プレイの分岐点は元のプラグインよりも少し遅れており、play ideaを実行するとIntelliJで問題が発生します。問題のない元のプラグインを使用できます。 playプロジェクトでこのプラグインを使用するには、必要があります。

1. project/plugins.sbtファイルに次の行を追加します(中央の空白行が必要です)

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

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

2. Playコンソールからgen-ideaを実行します。

3
Yeonho

IntellijIDEA(バージョン12.0.4)は通常、Play Frameworkコードエディターにのみ使用しました。

  1. デフォルトで自動保存機能
  2. かなり高速なIntelliSense機能
  3. Dracula UI、それは私にとって目を楽しませる

そして、私は通常Play SBTコンソールでアプリを実行してデバッグします。それは合理的な高速です。ただし、コンソールでplayコマンドを実行すると、loading-project-infoタスクに時間がかかりすぎる(10分近く)ことがあることがわかりました。これが時々起こる理由はわかりませんが、全体的にPlay SBTコンソールを使用するのが私の選択です。

通常はshould-not-be-the-problem-thingsとして解釈されますerrorのように解釈されます:

IDEA Error

Play Frameworkの学習を始めたとき、私はそのような問題に直面していました。そのため、最後に、Play SBTコンソールを使用してアプリを実行およびデバッグすることにしました。

質問2には答えられません。申し訳ありませんが、今まではplayアプリケーションの実行とデバッグのみを試みました。テスト目的で、Play 2.xを試したことはありません。

0
Wayan Wiprayoga