2012-06-16 27 views
6

Còn về tích hợp Lombok với Play Framework 2 thì sao? Tôi thực sự thích Lombok nó làm cho mã của tôi dễ đọc hơn và ít lò hơi. Và Play Framework cũng tuyệt vời. Nhưng có một rắc rối lớn trong trường hợp nếu bạn định trộn chúng lại.Lombok với Play 2

Lý do chính là scala temlates trong dự án phát được biên soạn trước các lớp miền. Vì vậy, Lombok, mà chính nó là hack của trình biên dịch không tạo ra accessors cho thời gian đó.

Câu hỏi đặt ra là: nếu có bất kỳ cách nào để làm cho nó hoạt động?

Tôi tìm thấy một số cuộc thảo luận trong GoogleGroups, nhưng họ không cung cấp bất kỳ giải pháp hợp lý. Vậy bạn có thành công với nó không?

Và .. tại sao những người từ dự án Khung Play không cung cấp một số giải pháp giống như Lombok? Dù sao Play có đầy ma thuật tạo bóng và tạo bóng ... vậy, tại sao lại không?

+0

tôi xem tại scala và rất nhiều nghi ngờ sẽ quay trong đầu tôi. Tôi nghĩ scala là _difficult_. Và còn một lý do nữa. Vẫn khó tìm được nhà phát triển scala. –

+0

Trong scala ý kiến ​​của tôi dễ hơn java. (YMMV tôi đã học scala và java cùng một lúc đến từ nhúng C). Nhưng bạn đúng, thật khó để tìm các nhà phát triển. – Fabian

+0

@Fabian IMHO, nó quá khác với cách java thông thường. Nó không phải là java với steroid, nó giống như một thế giới khác. Chỉ cần nhìn vào các thủ thuật _implicit_. Khi tôi wathing scala nguồn, tôi có cảm giác mạnh mẽ "What the ..". Nhưng đây chỉ là ý kiến ​​chủ quan của tôi. –

Trả lời

3

Vì vậy, cách giải quyết khá đơn giản và được đề xuất trong google groups, nhưng có một số tối tăm trong tài liệu, tôi sẽ mô tả từng bước những gì người ta nên làm.

1. Cô lập mô hình tên miền của bạn logicaly

Điều này có nghĩa rằng các lớp miền không nên gọi bất cứ điều gì từ xem hoặc điều khiển.

2. Tạo tiểu dự án có chứa các lớp miền

Một số thông tin được đưa here. Tiểu dự án rất giống với dự án chơi mặc định, và tạo ra nó không quá khó. Tôi không tìm thấy bất kỳ công cụ để làm điều này từ giao diện điều khiển của chơi, vì vậy bạn cần phải tạo một số thư mục bằng tay.

Lúc đầu, tạo thư mục con dự án trong thư mục của dự án chính. Giả sử bạn đặt tên cho nó là tên miền dữ liệu. Tiếp theo, tạo các thư mục cần thiết như được mô tả trong standart app. layout. Trong hầu hết các trường hợp, bạn muốn tạo cây thư mục đơn giản trong thư mục con đã tạo:

app 
└ models 
    └ myclasses 

Bây giờ di chuyển tất cả các lớp miền của bạn sang cây thư mục của dự án.

3.Configuration

Cấu hình sẽ được đơn giản enought. Di chuyển đến thư mục của dự án chính và mở Build.scala tệp. Đây là kịch bản xây dựng cho hệ thống xây dựng SBT.

Xác định một số phụ thuộc lúc đầu. Thêm các chuỗi sau vào tệp xây dựng của bạn:

val domainDependencies = Seq(
    "org.projectlombok" % "lombok" % "0.11.4" 
) 

Điều này sẽ thêm bình của Lombok vào tiểu dự án của bạn.Bây giờ, tạo nét tiểu dự án:

val domainProject = PlayProject(
          "domain-data", appVersion, domainDependencies, path=file("domain"), mainLang=JAVA 
) 

đâu đường phải trỏ đến thư mục của tiểu dự án.

Và bước cuối cùng là cập nhật cấu hình dự án chính để làm cho nó phụ thuộc vào tiểu dự án. Sự phụ thuộc sẽ đòi hỏi phải xây dựng lại tiểu dự án trên mỗi dự án xây dựng lại chính.

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).dependsOn(domainProject) 

Sau khi tất cả bắt đầu dự án chính với chơi lệnh được đưa ra trong giai đoạn cuối, và gõ dự án lệnh. Bạn sẽ thấy tiểu dự án mới của mình.

4. Lợi nhuận

Bây giờ nó là thời gian để cấu trúc lại một cách an toàn mã hiện tại của bạn sử dụng Lombok.

+1

Hoặc chỉ cố gắng sử dụng scala. Đó là nỗi đau chỉ trong khoảng tháng và lợi nhuận thuần túy sau đó. –

+5

Câu hỏi đặt ra là về Java và một vấn đề cụ thể, nói với anh chàng "hoặc sử dụng Scala" cũng giống như nói với anh ta "hoặc sử dụng Ruby hoặc Python". Không xây dựng chút nào. –

0

Ứng dụng của tôi là "conseillers" (Chơi 2.2.1 dự án) và mô hình của tôi là "Conseiller.java" trong/app/mô hình

a) Chỉ cần tạo hai thư mục và di chuyển "/ app/mô hình" thư mục vào mới thư mục con:/mô hình/app/mô hình make a new directory move the folder

b) thêm một tập tin build.sbt mới vào thư mục mới này create a new sbt file

c) sửa đổi build.sbt trong thư mục ứng dụng gốc với .dependsOn (không chắc chắn nếu .ag gregate là 100% cần thiết): modify root build sbt file

d) kiểm tra, biên dịch, chạy check

e) xem chi tiết tại đây sbt subprojects documentation on Play site

Các vấn đề liên quan