8

Play Framework 2 との Lombok 統合についてはどうですか? 私はLombokをとても気に入っています。これにより、コードが読みやすくなり、ボイラープレートが少なくなります。また、Play Framework も素晴らしいです。しかし、これらを混同すると大変なことになります。

主な理由は、ドメイン クラスの前にコンパイルされた play プロジェクトで scala がテンプレート化されることです。そのため、それ自体がコンパイラのハックである Lombok は、その間アクセサを生成しません。

問題は、それを機能させる方法があるかどうかです。

Google グループでいくつかのディスカッションを見つけましたが、合理的な解決策はありません。それで、あなたはそれで何か成功しましたか?

そして..なぜPlay Frameworkプロジェクトの人たちはLombokのようなソリューションを提供しないのですか? とにかく、Play はコード生成の魔法とシャドウ コンパイルでいっぱいです。

4

2 に答える 2

4

したがって、回避策はかなり単純で、Googleグループで提案されましたが、ドキュメントには不明瞭な部分があります。何をすべきかを段階的に説明します.

1. ドメイン モデルを論理的に分離する

これは、ドメイン クラスがビューまたはコントローラーから何も呼び出してはならないことを意味します。

2. ドメイン クラスを含むサブプロジェクトを作成する

ここに与えられたいくつかの情報。サブプロジェクトは default play のプロジェクトと非常に似ており、作成はそれほど難しくありません。Play のコンソールからこれを行うためのツールが見つからないため、手動でいくつかのフォルダーを作成する必要があります。

まず、メイン プロジェクトのフォルダー内にサブプロジェクト フォルダーを作成します。domain-dataという名前を付けたとしましょう。次に、標準アプリで説明されているように、必要なフォルダーを作成します。レイアウト。ほとんどの場合、作成したサブフォルダーに単純なディレクトリ ツリーを作成します。

app
 └ models
    └ myclasses

すべてのドメイン クラスをサブプロジェクトのディレクトリ ツリーに移動します。

3.構成

設定は簡単です。メイン プロジェクトのプロジェクトフォルダーに移動し、 Build.scalaファイルを開きます。これは、SBT ビルド システム用のビルド スクリプトです。

最初にいくつかの依存関係を定義します。ビルド ファイルに次の文字列を追加します。

val domainDependencies = Seq(
    "org.projectlombok" % "lombok" % "0.11.4"
)

これにより、Lombok の jar がサブプロジェクトに追加されます。サブプロジェクト定義を作成します。

val domainProject = PlayProject(
                            "domain-data", appVersion, domainDependencies, path=file("domain"), mainLang=JAVA
)

パスがサブプロジェクトのフォルダーを指す必要がある場所。

そして最後のステップは、サブプロジェクトに依存させるためにメインプロジェクトの構成を更新することです。依存関係には、メイン プロジェクトの再構築ごとにサブプロジェクトの再構築が伴います。

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).dependsOn(domainProject)

結局、端末で与えられたplayコマンドでメイン プロジェクトを起動し、 projectsコマンドを入力します。新しいサブプロジェクトが表示されるはずです。

4.利益

Lombok を使用して既存のコードを安全にリファクタリングする時が来ました。

于 2012-08-21T06:56:12.343 に答える
0

私のアプリは "conseillers" (Play 2.2.1 プロジェクト) で、私のモデルは /app/models の "Conseiller.java" です。

a) 2 つのフォルダーを作成し、「/app/models」フォルダーを新しいサブフォルダーに移動するだけです: /models/app/models 新しいディレクトリを作る フォルダを移動します

b) 新しい build.sbt ファイルをこの新しいフォルダーに追加します 新しい sbt ファイルを作成する

c) アプリのルート フォルダーにある build.sbt を .dependsOn で変更します (.aggregate が 100% 必要かどうかは不明です)。 ルート ビルド sbt ファイルを変更する

d) チェック、コンパイル、実行 小切手

e) 詳しくは Play サイトの sbt subprojects documentation を参照してください。

于 2013-11-11T20:15:43.203 に答える