【问题标题】:Lombok with Play 2龙目岛与玩 2
【发布时间】:2012-06-16 09:12:28
【问题描述】:

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

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

问题是:有什么方法可以让它工作吗?

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

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

【问题讨论】:

  • 我在看 scala,很多疑问在我脑海中盘旋。我认为 scala 是困难。还有一个原因。 Scala 开发者仍然很难找到。
  • 在我看来,scala 比 java 更容易。 (YMMV 我从嵌入式 C 中同时学习了 scala 和 java)。但你是对的,很难找到开发人员。
  • @Fabian 恕我直言,它与常规的 java 方式太不同了。它不是类固醇的java,它就像另一个世界。只需看看 implicit 技巧。当我看 scala 源时,我有强烈的感觉“什么..”。但这只是我的主观意见。
  • @niels 非常感谢。这就是我要讨论的内容。

标签: playframework lombok


【解决方案1】:

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

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

这意味着域类不应该从 viewscontrollers 调用任何东西。

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

一些信息给here。子项目与默认播放的项目非常相似,创建起来并不难。我在 play 的控制台中找不到任何工具来执行此操作,因此您需要手动创建一些文件夹。

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

app
 └ models
    └ myclasses

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

3.配置

配置会很简单。移动到主项目的 project 文件夹并打开 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 安全地重构现有代码了。

【讨论】:

  • 或者只是尝试使用scala。只是大约一个月的痛苦和以后的纯利润。
  • 问题是关于 Java 和一个具体问题,告诉那个人“或者使用 Scala”与告诉他“或者使用 Ruby 或 Python”是一样的。完全没有建设性。
【解决方案2】:

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

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

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

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

d) 检查、编译、运行

e) 在此处查看更多信息sbt subprojects documentation on Play site

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 2011-06-19
    • 2018-03-29
    • 1970-01-01
    • 2021-10-02
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多