2012-06-16 117 views
6

Lombok與Play Framework 2的整合情況如何? 我真的很喜歡Lombok它使我的代碼更具可讀性和更少的樣板。 Play Framework也很棒。但如果你打算混淆他們,那麼遇到很大的麻煩。Lombok with Play 2

主要原因是scala在播放項目編譯之前域類。所以Lombok本身就是編譯器的黑客,那時候不會生成訪問器。

問題是:如果有什麼方法可以使它工作?

我在GoogleGroups發現了一些討論,但他們沒有提供任何合理的解決方案。那麼你有沒有取得任何成功?

And ..爲什麼Play Framework項目的人不會提供類似Lombok的解決方案?無論如何,Play充滿了代碼生成魔法和陰影編輯......所以,爲什麼不呢?

+0

我看在Scala和諸多疑點在我的頭紡紗的。我認爲斯卡拉是_difficult_。還有一個原因。仍然很難找到Scala開發人員。 –

+0

在我看來,scala比java更容易。 (YMMV我從嵌入式C中同時學到了scala和java)。但你是對的,很難找到開發者。 – Fabian

+0

@Fabian恕我直言,這是不同於普通的Java方式。它不是類固醇的Java,它像另一個世界。只要看看_implicit_技巧。當我揮動scala來源時,我有強烈的感覺「什麼......」。但這只是我的主觀意見。 –

回答

3

因此,解決方法相當簡單,並在google groups中提出,但文檔中存在一些不明之處,那麼我將逐步描述應該怎麼做。

1.切斷您的域模型logicaly

這意味着域類不應該從觀點控制器叫什麼。

2.創建子項目包含域類

給出here一些信息。子項目與默認播放項目非常相似,並且創建它並不那麼困難。我沒有找到任何工具來從遊戲控制檯執行此操作,因此您需要手動創建一些文件夾。

首先在主項目的文件夾中創建子項目文件夾。我們假設您將其命名爲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) 

畢竟開始主體工程與終端給出發揮命令,鍵入項目命令。你應該看到你的新子項目。

4,盈利

現在是時候用龍目島安全重構現有的代碼。

+1

或者只是嘗試使用scala。以後只有大約月份和純利潤是痛苦的。 –

+5

問題是關於Java和一個具體問題,告訴他「或者使用Scala」跟告訴他「或者使用Ruby或者Python」是一樣的。根本沒有建設性。 –

0

我的應用程序是「推事」(播放2.2.1項目)和我的模式是「Conseiller.java」在/ app /型號

一)只需創建兩個文件夾和移動「/應用程序/模型」文件夾複製到新的子文件夾:/模型/應用/型號 make a new directory move the folder

二)增加一個新的build.sbt文件,這個新文件夾 create a new sbt file

c)修改中的build.sbt根目錄應用程序文件夾與.dependsOn(不知道如果.ag gregate是必要的100%): modify root build sbt file

d)檢查,編譯,運行 check

E)多看這裏sbt subprojects documentation on Play site