Playframework 龙目山与第二场比赛

Playframework 龙目山与第二场比赛,playframework,lombok,Playframework,Lombok,Lombok与Play Framework 2的集成如何? 我真的很喜欢它,它使我的代码更具可读性,减少了模板。游戏框架也很棒。但是如果你把它们混在一起的话,会有很大的麻烦 主要原因是scala在域类之前编译的play项目中出现。所以Lombok本身就是编译器的黑客,在那个时候不会生成访问器 问题是:如果有什么办法可以让它发挥作用 我在中发现了一些讨论,但它们没有提供任何合理的解决方案。那你成功了吗 和。。为什么Play Framework项目的人员不提供类似Lombok的解决方案?无论如何,这

Lombok与Play Framework 2的集成如何? 我真的很喜欢它,它使我的代码更具可读性,减少了模板。游戏框架也很棒。但是如果你把它们混在一起的话,会有很大的麻烦

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

问题是:如果有什么办法可以让它发挥作用

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


和。。为什么Play Framework项目的人员不提供类似Lombok的解决方案?无论如何,这部戏充满了代码生成的魔力和阴影编译。。。那么,为什么不呢?

因此,解决方法非常简单,是在中提出的,但文档中有一些模糊之处,我将逐步描述应该做什么

1。逻辑隔离您的域模型

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

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

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

首先,在主项目文件夹中创建子项目文件夹。假设您将其命名为域数据。接下来,创建所需的文件夹,如中所述。在大多数情况下,您希望在已创建的子文件夹中创建简单目录树:

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安全地重构现有代码的时候了。

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

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

b) 将新build.sbt文件添加到此新文件夹

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

d) 检查、编译、运行


e) 更多信息请看这里

我在scala观看比赛,脑海中充满了怀疑。我认为scala很难。还有一个原因。在我看来,scala比java更容易。(我同时从嵌入式C学习了scala和java)。但你说得对,很难找到开发人员。@Fabian IMHO,这和常规java方式太不一样了。它不是一个有类固醇的爪哇,它就像另一个世界。只需看看隐式技巧。当我看到scala的资料时,我有一种强烈的感觉“到底是什么……”。但这只是我的主观意见。也许你应该联系本McCann@niels非常感谢。这就是我想讨论的。或者试着使用scala。这个问题是关于Java的,一个具体的问题,告诉这个家伙“或者使用Scala”和告诉他“或者使用Ruby或者Python”是一样的。毫无建设性。