Tôi muốn có thể triển khai các thay đổi mã cho Tomcat (gần ngay lập tức), trong khi tôi đang phát triển trong Eclipse.Tomcat và Eclipse Zero triển khai quay vòng
Cho đến nay, tôi có đầu ra của mình từ Eclipse đặt các lớp dựng sẵn trong thư mục WEB-INF/classes
của ứng dụng web của tôi.
Tôi cũng có ngữ cảnh có thể tải lại, với tài nguyên được xem là web.xml
. Mọi chỉnh sửa/lưu vào tệp này sẽ tải lại ứng dụng web của tôi, chỉ mất hơn một giây - nhanh hơn nhiều so với việc tạo tệp chiến tranh mới và triển khai tệp đầy đủ.
Tuy nhiên, những gì tôi muốn làm là kích hoạt triển khai lại khi tôi chỉnh sửa bất kỳ tệp nguồn nào. Khi các tệp .class đang được sửa đổi trong Tomcat, có vẻ như tôi chỉ cần theo dõi bất kỳ thay đổi nào trong thư mục WEB-INF/classes
và đó là các con.
Tôi đã đọc rằng tôi có thể thêm tài nguyên đã xem bổ sung vào số context.xml
của Tomcat. Tuy nhiên, điều này dường như không hoàn toàn là gì - trừ khi có thể chỉ định thư mục sẽ được theo dõi (bao gồm theo dõi đệ quy thư mục con và tệp))?
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/someother.file</WatchedResource>
<Manager pathname=""/>
</Context>
Vì vậy, về cơ bản, câu hỏi của tôi là tôi có thể xem toàn bộ thư mục lớp học (không bao gồm mỗi WatchedResource
rõ ràng) để kích hoạt một redeploy trong Tomcat?
Nếu không, tôi có thể định cấu hình Eclipse thành touch
tệp web.xml, bất cứ khi nào tôi lưu tệp nguồn trong dự án đó? Tôi đang phát triển trên một hệ thống Windows. :(
PS Tôi không quan tâm đến các sản phẩm JRebel. Bất kỳ câu trả lời phải là một giải pháp miễn phí .
Cập nhật
Theo Tomcat documentation, nên theo dõi thư mục lớp học bằng cách đặt bối cảnh thành có thể tải lại:
Đặt thành true nếu bạn muốn Catalina đến các lớp giám sát trong/WEB-INF/classes/ và/WEB-INF/lib để thay đổi và tự động tải lại trang web ứng dụng nếu phát hiện thay đổi.
Chỉ những thay đổi đối với web.xml dường như kích hoạt tải lại. Đây có phải là lỗi hoặc thiết lập của tôi không chính xác không?
Ngoài ra, tôi đã đọc về cách thiết lập các thuộc tính docBase
cho một bối cảnh cụ:
docBase="webapps/someExample"
này dường như được gần gũi với những gì tôi cần, như tôi sau đó có thể tái xuất trong Eclipse một cách nhanh chóng. Vấn đề duy nhất của tôi là tôi yêu cầu một số ứng dụng web/servlet để chạy trong Tomcat đồng thời, trên cùng một cổng, v.v.
Bạn có biết có cách nào để thực hiện việc này với nhiều ứng dụng web đang chạy trên Tomcat không? (Chỉ một người cần phải ở trong con đường 'xây dựng đầu ra') – Mikaveli
Tôi không chắc chắn tôi theo bạn. Bạn có nhiều dự án web độc lập mà bạn muốn hành xử theo cùng một cách trong quá trình phát triển không? Hoặc, bạn có nhiều dự án web đang sử dụng cùng một thư viện được chia sẻ và bạn muốn biên dịch thư viện được chia sẻ thành thư mục lớp dự án web không? Nếu các dự án độc lập, thì bạn chỉ cần một tệp ngữ cảnh cho mỗi dự án (đặt tên tệp là .xml). Nếu các dự án sử dụng cùng một mã chia sẻ và bạn muốn biên dịch vào thư mục lớp web, thì tôi không chắc chắn bạn sẽ làm như thế nào. –
philwb
Tôi có nhiều ứng dụng web phải chạy trong cùng một phiên bản của Tomcat - Tôi không cần hành vi 'triển khai nóng' tương tự từ chúng. – Mikaveli