web-dev-qa-db-ja.com

Mavenの依存関係を使用してPlayFramework 2.0をGradleビルド管理に統合するにはどうすればよいですか?

Play Framework 2.0は、Webアプリケーションを作成するためのフルスタックスタンドアロンフレームワークです。それにもかかわらず、おそらく多くの人がそれをビルド管理に統合する必要があります。残念ながら、私は彼について多くの情報を見つけられませんでした。

これが私のユースケースです:ScalaとPlay2.0を使用する新しいプロジェクトを作成したい。sbtを使用したくない。Gradleを使用したいので、依存関係の管理を行う必要がある。 Mavenリポジトリ経由。

私はこのプレイモジュールのみを見つけました: http://www.playframework.org/modules/maven-1.0/home Mavenを介した依存関係管理をサポートします。

Grailsで次の例のようなものを探しています: https://github.com/grails/grails-gradle-plugin または http://grails.org/doc/latest/ guide/commandLine.html#4.5%20Ant%20and%20Maven

もちろん、「プレイコンソールコマンド」を呼び出すスクリプト/タスクを書くこともできます。しかし、私はこの解決策が好きではありません。ビルド管理にGradle/Mavenを使用するより良い方法はありますか?これが唯一の解決策である場合は、Gradleを使用します。GradleはPlayコマンド(つまり、内部でsbt)を呼び出します。これは機能しますか、それとも他の問題が発生しますか?

33
Kai Wähner

これは非常にトリッキーなビジネスです。 PlayのSBTは、依存関係のフェッチ、ソースとテンプレートのコンパイル、およびSBTインクリメンタルコンパイル+自動リロード機能に使用されます。すべてのPlay2.0依存関係を解決し、EclipseまたはIntelliJ IDEAクラスパスを設定するために、build.gradleスクリプトを作成し、それを ここで公開 にしました。

後で時間があるときにコンパイルを実装しようとしますが、それにはいくつかの調査が必要になります。もちろん、SBTに委任するだけのコンパイルタスクと実行タスクを追加することはできますが、SBTとGradleの両方ですべてのプロジェクトの依存関係を記述する必要があり、管理が難しくなります。

編集:

sample build.gradle ファイルを更新しました。 CI環境で役立つplayCompileタスクとplayCleanタスクを追加しました。 playCompileタスクは次のことを行います。

  1. すべてのユーザー依存関係(compile構成で定義)をlib/フォルダーにコピーします。これは、Playがlib/の下からすべてのjarファイルを親切に取得するために機能します。
  2. play compileコマンドを実行して、すべてのソース、テンプレート、およびその他のPlayフレームワークのものをコンパイルします。

cleanCopyPlayLibsplayCleanを使用して、それぞれ上記のコマンドの出力を削除できます。

Windowsには奇妙な問題(バグ?)があるように見えることに注意してください。つまり、play compileが失敗しても、gradleは成功したことを通知します。

コメントへの返信:

私はあなたが単に行方不明だと思います

repositories{
  mavenCentral()
}

あなたのファイルで。チェック このドキュメントアウト

24
rodion

朗報です。Gradle2.7の時点で、公式の再生プラグインがあります: https://docs.gradle.org/current/userguide/play_plugin.html

5
mana

LinkedInは現在これをサポートするためにGradleプラグインを作成しています 。彼らはこれを3つのマイルストーンで展開しています:

  1. Gradleを使用してPlayアプリケーションを構築する
  2. 連続モードとホットリロード
  3. ScalaインタラクティブREPL

Milestone 1はすでに完成しています。Gradleナイトリービルド から入手できます。上記のリンクされたブログ投稿で、彼らは人々にそれを試してみるように勧めています。

3
spierce7

Play Framework 1.2.x用のGradleで、Play2.xにも使用できる簡単なビルドスクリプトを設計しました。

https://github.com/kirang89/play-gradle

0
Kiran