龙目岛与Play 2

时间:2012-06-16 09:12:28

标签: playframework lombok

Lombok与Play Framework 2的集成怎么样? 我非常喜欢Lombok它使我的代码更具可读性和更少的样板。 Play Framework也很精彩。但是如果要混淆它们的话会有很大的麻烦。

主要原因是在域类之前编译的play项目中的scala temlates。所以Lombok,它本身就是编译器的黑客,在那个时候不生成访问器。

问题是:是否有任何方法可以使其发挥作用?

我在Google Groups中找到了一些讨论,但他们没有提供任何合理的解决方案。那你有成功吗?

并且..为什么来自Play Framework项目的人不提供类似Lombok的解决方案?无论如何,Play充满了代码生成魔法和阴影编译...所以,为什么不呢?

2 个答案:

答案 0 :(得分:4)

因此,解决方法相当简单,并在google groups中提出,但文档中有一些含糊不清的内容,我将逐步描述应该做什么。

<强> 1。逻辑上隔离您的域模型

这意味着域类不应该从视图控制器中调用任何内容。

<强> 2。创建包含域类的子项目

给出了here的一些信息。子项目与默认播放的项目非常相似,并且创建它并不那么难。我从play的控制台找不到任何工具,所以你需要手工创建一些文件夹。

首先在主项目的文件夹中创建子项目文件夹。我们假设您将其命名为 domain-data 。接下来,创建所需的文件夹,如standart app. layout中所述。在大多数情况下,您希望在创建的子文件夹中创建简单的目录树:

app
 └ models
    └ myclasses

现在将所有域类移动到子项目的目录树中。

<强> 3.Configuration

配置将很简单。移至主项目的项目文件夹,然后打开 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安全地重构现有代码了。

答案 1 :(得分:0)

我的应用程序是“conseillers”(Play 2.2.1项目),我的模型是/ app / models中的“Conseiller.java”

a)只需创建两个文件夹并将“/ app / models”文件夹移动到新的子文件夹:/ models / app / models make a new directory move the folder

b)将新的build.sbt文件添加到此新文件夹中 create a new sbt file

c)使用.dependsOn修改根应用程序文件夹中的build.sbt(不确定.aggregate是否100%是必需的): modify root build sbt file

d)检查,编译,运行 check

e)点击此处sbt subprojects documentation on Play site