8

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

主要原因是在域类之前编译的 play 项目中的 scala 模板。因此,Lombok 本身就是编译器的 hack,此时不会生成访问器。

问题是:是否有任何方法可以使它起作用?

我在Google Groups中发现了一些讨论,但它们没有提供任何合理的解决方案。那么你有没有成功呢?

还有.. 为什么 Play Framework 项目的人不提供一些类似 Lombok 的解决方案?无论如何,Play 充满了代码生成魔法和影子编译……那么,为什么不呢?

4

2 回答 2

4

因此,解决方法相当简单,并且是在google groups中提出的,但是在文档中有一些晦涩难懂的地方,我将逐步描述应该做什么。

1. 逻辑隔离你的领域模型

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

2.创建包含领域类的子项目

这里给出了一些信息。子项目与默认播放的项目非常相似,创建起来并不难。我没有从 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)

毕竟使用终端中给出的播放命令启动主项目,然后输入项目命令。您应该看到您的新子项目。

4. 利润

现在是时候使用 Lombok 安全地重构现有代码了。

于 2012-08-21T06:56:12.343 回答
0

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

a) 只需创建两个文件夹并将“/app/models”文件夹移动到新的子文件夹:/models/app/models 创建一个新目录 移动文件夹

b) 将新的 build.sbt 文件添加到这个新文件夹 创建一个新的 sbt 文件

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

d) 检查、编译、运行 查看

e)在 Play 网站上查看更多 sbt 子项目文档

于 2013-11-11T20:15:43.203 回答