2010-01-07 31 views
6

Tôi đang ở trong một tình huống mà về cơ bản tôi muốn có thể có một dự án web trong Eclipse, nơi thư mục WebContents được hợp nhất từ ​​nhiều dự án thay vì chỉ một dự án web động duy nhất.Eclipse: Có nhiều dự án web động đóng góp vào một tệp chiến tranh duy nhất?

Nếu tôi có "a.jsp" trong dự án A và "b.jsp" trong dự án B, tôi muốn kết thúc bằng một ứng dụng web duy nhất trong vùng chứa web nơi "a.jsp" và "b .jsp "ngồi cạnh nhau trong cùng một thư mục. Nó sẽ là hoàn hảo nếu tất cả các tập tin, không chỉ các tập tin jsp, có thể được sáp nhập như thế này.

Điều này là để có thể có phiên bản lõi của ứng dụng nhưng có thể dễ dàng xử lý các thay đổi cụ thể của khách hàng.

Tôi biết tôi có thể làm điều này với ma thuật phù hợp, nhưng chúng tôi muốn có một cái gì đó hoạt động tốt cho quy trình phát triển dựa trên Eclipse hiện tại của chúng tôi. Chúng tôi sẽ sử dụng JSR-330 phụ thuộc tiêm vào các lớp Java, và về cơ bản tôi muốn một cái gì đó dọc theo dòng tiêm phụ thuộc nhưng chỉ cho bất kỳ tài nguyên và không chỉ các lớp học.

Eclipse có thể thực hiện việc này không?

Nếu Eclipse không thể, việc triển khai EAR có phù hợp không? Tôi hiện chỉ có kinh nghiệm với WAR.

Trả lời

1

Nếu sử dụng Maven là một tùy chọn, thì Maven overlays sẽ hoàn hảo ở đây và về mặt lý thuyết nên được hỗ trợ bởi plugin m2eclipse. Nhưng tôi không có bất kỳ kinh nghiệm với điều đó và có thể có một số vấn đề (xem MNGECLIPSE-599) vì vậy điều này sẽ yêu cầu một số thử nghiệm.

Tuy nhiên, các ý kiến ​​của MNGECLIPSE-599 là khá thú vị, đặc biệt là cái này:

Bất kỳ tình yêu dành cho vấn đề này? Toàn bộ nhóm của chúng tôi đã chuyển sang Netbeans để phát triển WAR vì điều này. Về cơ bản, chúng tôi đang chờ Servlet 3.0 giải quyết vấn đề này cho chúng tôi (Servlet 3).0 có hiệu quả sẽ phủ nhận nhu cầu của chúng tôi để làm lớp phủ trong Maven) Công ty chúng tôi là lớn trên giảm sao chép-dán vì vậy chúng tôi sử dụng lớp phủ để quản lý phương tiện truyền thông WAR phải được phổ biến trong các ứng dụng của chúng tôi.

Cách Java EE 6 sẽ làm lớp phủ lỗi thời không phải là tinh thể rõ ràng đối với tôi (thông qua phân đoạn web?) Nhưng thực tế là Eclipse's WTP release with Java EE 6 support has been delayed to June 2010. Vì vậy, cho đến lúc đó, bạn sẽ cần thêm công cụ (ví dụ: lớp phủ maven) hoặc có thể xem xét chuyển sang NetBeans.

+0

maven không phải là một lựa chọn trừ khi chúng tôi hoàn toàn, không thể tránh khỏi phải. Chúng tôi không bị cám dỗ bởi cách sống của con quạ :) Lý do cho JEE6 là chúng tôi muốn đẩy ngăn xếp dịch vụ web, tiêm phụ thuộc và JSF 2.0 vào vùng chứa thay vì triển khai các triển khai phù hợp bên trong WAR. Từ các cuộc điều tra của tôi ngày hôm nay tôi không nghĩ rằng thời gian là đúng cho điều đó. –

+0

Cảm ơn bạn đã đề cập đến Servlet 3.0 để giải quyết điều gì đó. Tôi sẽ xem xét nó. –

+0

Chúng tôi di chuyển đến maven và kết thúc làm chính xác điều này. Cảm ơn. –

0
  • bạn không cần phải thay đổi "quy trình phát triển dựa trên nhật thực" của bạn để sử dụng kiến. Chỉ cần đăng ký trình tạo Ant (right click project > Properties > Builders) và tích hợp tập lệnh kiến ​​với quy trình nhật thực của bạn
  • bạn có thể sử dụng các tùy chọn đa mô-đun của maven. (Plugin maven cho nhật thực cũng rất tốt)
  • sử dụng cũng có thể sử dụng FileSync - không phải tiêu chuẩn công nghiệp nhưng khá mạnh mẽ. Nó được sử dụng để phát triển trên localhost, tất nhiên.

Dưới đây là một vài lời khuyên cho việc sử dụng FileSync:

  • thiết lập các tập tin/mô hình tập tin/dirs để sao chép vào một thư mục đích (Tomcat của webapps/application trong trường hợp của bạn). Vì vậy, ngay sau khi bạn nhấn "lưu", các tập tin được sao chép.
  • làm cho tất cả đường dẫn tuyệt đối trong FileSync.xxxx.prefs tương đối bằng cách giới thiệu một tài nguyên được liên kết (preferences > workspace > linked resources), và sử dụng các biến tài nguyên liên kết trong Prefs nộp (cho phép gọi nó là WEBAPP_HOME)
  • cam kết FileSync.xxxx.prefs tập tin
  • nói mỗi nhà phát triển trên nhóm để định cấu hình biến số WEBAPP_HOME. Do đó, thiết lập sẽ không hợp lệ cho chỉ một máy, nhưng đối với mỗi máy trong nhóm.
+0

Bạn có kinh nghiệm với một người xây dựng kiến ​​khi thực hiện phát triển ứng dụng web? Chúng tôi hiện đang sử dụng Tomcat, nhưng đối với các lý do JSR-330, chúng tôi xem xét việc chuyển sang Glassfish. Tôi đặc biệt quan tâm đến thời gian quay vòng - nhấn Ctrl-S và tải lại trong trình duyệt. –

+0

Tôi có kinh nghiệm với maven và với tùy chọn mới được thêm vào - FileSync.I sử dụng maven để tạo một bản dựng và FileSync cho các công cụ CTRL + S. Nó khá mạnh mẽ - bạn chỉ cần cấu hình nó để di chuyển các tập tin từ mỗi dự án đến một thư mục đích chung. – Bozho

1

Tôi đã có một trường hợp sử dụng tương tự mà tôi đã giải quyết thành công bằng cách sử dụng (như Pascal được đề xuất) Maven. Tôi có một dự án web gốc (cũng hoạt động độc lập) và cho mỗi khách hàng tôi có một dự án web riêng biệt được cấu hình để phủ với dự án web gốc. Hơn nữa, vì mỗi khách hàng có một số môi trường, tôi đã tạo ra một hồ sơ maven cho từng môi trường (kiểm tra, sản xuất, địa phương, ...). Tôi tài liệu này một chút vì vậy nếu bao giờ bạn quan tâm tôi không nhớ gửi thư cho bạn doc.

+0

Tôi khuyên bạn nên viết lên blog. Đây là điều mà bất kỳ dự án không tầm thường nào cần có khả năng xử lý. –

+0

Ý tưởng hay, mọi đề xuất cho blog cộng đồng/maven tôi có thể sử dụng? –

+0

Tạo địa điểm của riêng bạn và liên kết với nó trong hồ sơ SE của bạn. –

0

Tôi khuyên bạn nên sử dụng servlet 3.0 "Tài nguyên trong các tệp jar được nhóm". Với tính năng này, bạn có thể bao gồm tài nguyên web (html/xhtml/css/js/jpg/etc) trong tệp jar (cùng với tệp lớp java), và máy chủ web sẽ tìm kiếm thư mục "META-INF/resources" các lọ cho các nguồn tài nguyên.

Xem thêm chi tiết ở đây:

http://alvinjayreyes.com/2013/07/28/servlet-3-0/

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