34

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

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

Play アプリケーションを作成しました。IntelliJ で Specs 2 テストを作成して実行するのに苦労しています。Specs 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
4

3 に答える 3

57

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


IntelliJ IDEA は、Play Framework 2 とうまく統合されています。時々動かなくなりますが、ほとんどの場合は実行されます。私はそれを使用して (単一、すべての) テストを実行し、play アプリケーションを開始またはデバッグし、コードを編集します (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

3.IDE を構成する

  1. 新しく作成したプロジェクトを開く
  2. モジュール設定を開きます(プロジェクトを選択してF4を押します)
  3. プロジェクトに Scala ライブラリを追加する
    1. Modules->myapp->Dependencies を選択します
    2. プラスアイコンを押してライブラリを選択します(2)
    3. Scala 2.10.0 プロジェクト ライブラリを追加する
  4. Scala ファセットでコンパイラ ライブラリを選択する
    1. ファセットを選択-> 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. 出力パス(X:\projects\myapp\project\target\scala_2.9.2\classes) にクラスを追加します
    3. テストクラステスト出力パス(X:\projects\myapp\project\target\ scala_2.9.2 \test-classes) に追加します。

4. テストを実行する

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

5. アプリケーションを実行する

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

6.依存関係を更新する

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

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

  1. updatePlay コンソールからタスクを実行する
  2. .idea_modulesディレクトリと.idea/librariesディレクトリを削除します
  3. idea with-sources=yesプレイコンソールでコマンドを実行します
  4. 手順 3 をもう一度実行します
于 2013-04-24T08:00:27.557 に答える
3

Play コンソールにはsbt-idea という名前の sbt プラグインのフォークが含まれています。play の fork は元のプラグインより少し遅れており、実行時に IntelliJ にいくつかの問題がありますplay idea。問題のない元のプラグインを使用できます。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.gen-ideaプレイコンソールから実行します。

于 2013-08-19T09:51:48.237 に答える
0

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

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

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

通常、次のようなエラーとして解釈されるべきではない問題があるため、私はそれを行っています:

アイデアエラー

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

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

于 2013-04-22T01:52:00.150 に答える