2012-06-16 4 views
6

Lombok과 Play Framework 2의 통합은 어떻습니까? 나는 Lombok이 좋기 때문에 내 코드가 읽기 쉽고 덜 상용구가된다. Play Framework도 훌륭합니다. 그러나 당신이 혼란에 빠지면 큰 어려움이 있습니다.Lombok with Play 2

주된 이유는 도메인 클래스보다 먼저 재생 프로젝트의 스칼라 템플리트가 컴파일 된 것입니다. 그래서 롬복 (Lombok)은 컴파일러의 해킹으로 그 당시에 접근자를 생성하지 않았습니다.

질문은 : 그것이 작동하게하는 어떤 방법이라면?

GoogleGroups에 몇 가지 토론이 있지만 합리적인 해결책이 없습니다. 그럼 성공 했니?

그리고 왜 Play Framework 프로젝트의 사람들은 롬복과 같은 솔루션을 제공하지 않습니까? 어쨌든 Play는 코드 생성 마법과 그림자 컴파일로 가득차 있습니다 ... 그래서, 왜 안되죠?

+0

자세한 내용은 여기를 참조) check

전자를 실행 modify root build sbt file

D) 검사, 컴파일 gregate 100 % 필요가)입니다. 나는 scala가 _difficult_라고 생각한다. 그리고 또 하나의 이유가 있습니다. 스칼라 개발자를 찾는 것은 여전히 ​​어렵습니다. –

+0

제 생각에는 scala가 java보다 쉽습니다. (YMMV 내가 임베디드 C에서 도착 동시에 스칼라와 자바를 배웠습니다). 그러나 당신은 맞습니다. 개발자를 찾는 것이 어렵습니다. – Fabian

+0

@ Fabian IMHO, 일반 자바 방식과 너무 다릅니다. 스테로이드가있는 자바가 아닙니다. 다른 세계와 같습니다. _implicit_ 트릭을 한번보세요. 내가 스칼라 소스를 wathing 할 때, 나는 강한 감정을 가지고 "What the ..". 그러나 이것은 단지 나의 주관적인 견해 일뿐입니다. –

답변

3

해결 방법은 다소 간단하며 google groups에 제안되었지만 문서에는 다소 모호한 부분이 있으므로 단계별로 설명해야합니다.

1. 격리는 도메인 모델은 논리적으로

이 도메인 클래스가 전망 또는 컨트롤러에서 아무것도 호출하지 않아야 것을 의미한다.

2. 도메인 클래스

here 주어진 어떤 정보를 포함하는 하위 프로젝트를 만듭니다. 하위 프로젝트는 기본 게임의 프로젝트와 매우 유사하며 그렇게 어렵지 않게 만듭니다. 나는 놀이 도구로이 작업을 수행 할 도구를 찾지 못하므로 손으로 몇 개의 폴더를 만들어야합니다.

먼저 기본 프로젝트의 폴더에 하위 프로젝트 폴더를 만듭니다. 도메인 데이터이라고 가정 해 보겠습니다. 그런 다음 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

질문은 자바와 특정 문제에 관한 것이고, "스칼라를 사용하는"사람에게 "또는 루비 또는 파이썬을 사용하는 것"이라고 말하는 것과 같습니다. 전혀 건설적이지 않습니다. –

0

내 애플 "conseillers"(2.2.1 프로젝트 재생)이며, 나의 모델은 "Conseiller.java"입니다/응용 프로그램/모델

에서

A) 그냥 두 개의 폴더를 생성하고 "/ 응용 프로그램/모델"로 이동 새 하위 폴더에 폴더 :/모델/응용 프로그램/모델 make a new directory move the folder

B) create a new sbt file

C이 새 폴더에 새 build.sbt 파일을 추가)에있는 build.sbt을 수정 .dependsOn을 가진 루트 앱 폴더 (.ag 내가 스칼라와 내 머리에 spining 의심의 많은에보고하고 sbt subprojects documentation on Play site