2009-06-20 41 views
12

Tôi có một tình huống mà một số mã groovy của tôi tham chiếu đến các tệp java của tôi, nhưng tôi cũng có các tệp java khác nhau tham chiếu đến cùng một mã groovy. Khi cố gắng biên dịch trong maven, tôi cần biên dịch phần mềm groovy trước hoặc sau java, và điều đó sẽ không thực sự hoạt động vì mã groovy phụ thuộc vào một số tệp java và các tệp java khác nhau phụ thuộc vào mã groovy. Có cách nào để xử lý loại phụ thuộc này không?maven biên dịch groovy

Trả lời

8

Bạn sẽ có thể biên dịch mã của mình bằng cách thêm plugin gmaven vào tệp pom.xml maven của bạn. Nó tạo ra các đoạn mã Java của mã groovy của bạn để xử lý kiểu tham chiếu liên ngôn ngữ mà bạn đang xử lý. Tôi sử dụng nó khá nhiều và nó hoạt động rất tốt.

0

Bạn có thể phân vùng mã của mình thành các lớp và có các lớp thấp hơn gọi các lớp trên nhưng không bao giờ ngược lại. Ví dụ, trong một ứng dụng Web, bạn có thể có một lớp xem, một lớp dịch vụ và một lớp kiên trì. Lớp xem gọi lớp dịch vụ và tầng dịch vụ gọi lớp kiên trì, nhưng lớp kiên trì sẽ không bao giờ gọi lớp dịch vụ hoặc lớp xem. Nếu bạn muốn mã groovy/java tồn tại trong cùng một lớp thì hãy chắc chắn rằng một cuộc gọi khác nhưng chúng không gọi cả hai. Điểm mấu chốt là bạn nên tránh phụ thuộc hai hướng.

+0

-1 Có trình biên dịch Groovy-Java chung. –

+0

Đó là sự thật nhưng có phụ thuộc hai hướng có thể dẫn đến mã phức tạp và ít bảo trì không cần thiết. Trong bối cảnh của câu hỏi này, tôi đồng ý rằng việc sử dụng GMaven là câu trả lời đúng nhưng tôi vẫn sẽ cấu trúc lại mã để loại bỏ, hoặc ít nhất là giảm các mối quan hệ hai hướng. – rich

11

Có, chỉ cần sử dụng GMaven. Vì nó là một trình biên dịch chung, nó sẽ tự động quản lý java của bạn để thu hút và hấp dẫn đến các phụ thuộc java.

Tóm lại, bạn sẽ cần phải:

  • bao gồm gmaven-plugin trong pom.xml của bạn;
  • giữ các lớp học hấp dẫn của bạn dưới src/main/groovy hoặc src/test/groovy;
  • liên kết plugin gmaven với các giai đoạn vòng đời có liên quan.

Để biết thêm chi tiết, xem building groovy projects.

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