2013-04-24 11 views
7

Tôi đang sử dụng Intellij Idea 12 và có một mô-đun đa maven dự án.Intellij đa mô-đun maven dự án, cập nhật trong một trong các submodules không được propogated để chiến tranh

Để làm cho nó đơn giản chúng ta hãy giả định rằng tôi có:

  • Mô-đun A - biên soạn để JAR
  • Module B - tùy thuộc vào mô-đun A và cũng biên soạn để JAR
  • Mô-đun C - tùy thuộc vào mô-đun B, nhưng được biên soạn thành WAR

Tôi biết Intellij có cơ chế xây dựng riêng cho các dự án maven nên khi tôi xây dựng một WAR lần đầu tiên và triển khai nó cho Tomcat, tất cả đều hoạt động như bình thường. Vấn đề bắt đầu khi bạn cần thay đổi một trong các mô-đun phụ, ví dụ Mô-đun A và xây dựng lại Chiến tranh (xây dựng lại Mô-đun C)

Intellij vì có vẻ như sử dụng Mô-đun cũ đã được tạo trước đó và bỏ qua bất kỳ những thay đổi tôi đã thực hiện trong Mô-đun A khi tạo/xây dựng Mô-đun C.

Cách duy nhất tôi tìm ra là chạy Maven xây dựng trên Mô-đun A và B và khởi tạo WAR với Maven và triển khai nó làm nguồn bên ngoài.

Vấn đề là tôi có 10 WAR mà tôi muốn triển khai và hơn 20 mô-đun phụ được biên dịch thành các lọ. Nó không có ý nghĩa để xây dựng lại tất cả các cuộc chiến tranh khi tôi chỉ muốn nhìn thấy những thay đổi tôi đã thực hiện trong một mô-đun phụ có ảnh hưởng đến một WAR. Và chắc chắn không có ý nghĩa để xây dựng chúng bên ngoài với dòng lệnh trong khi trả tiền cho giấy phép Intellij Ultimate (vì vậy tôi có thể làm việc với Máy chủ ứng dụng)

Bây giờ so sánh hành vi này với IDE 1. Netbeans làm việc với dự án maven tự nhiên qua Maven và tất cả các bản dựng/triển khai và được thực hiện với Maven chứ không phải bởi một số cơ chế nội bộ. 2. Eclipse thực hiện tương tự với cơ chế nội bộ của nó nhưng tất cả các JAR được cập nhật khi dự án WAR được xây dựng lại. (Hoặc một số phép thuật khác hoạt động)

Có cách nào khác với IDEA hay không?

+0

Vui lòng đăng bài này lên bộ theo dõi Intellij Idea JIRA. – MariuszS

+0

"Tự động hóa dự án" được bật trong IDEA của bạn? – MariuszS

+0

Được đăng trên Intellij Youtrack - http://youtrack.jetbrains.com/issue/IDEA-106162 –

Trả lời

1

Cuối cùng tôi tìm thấy một giải pháp lai cho việc này: Những điều cần được thực hiện trước khi Tomcat đang chạy:

  1. sạch tất cả
  2. xây dựng, đóng gói và đăng ký (trong kho) tất cả các dự án mà nên trở thành JAR
  3. Compile chỉ (không xây dựng) WAR dự án
  4. đồ tạo tác xây dựng WAR với Intellij (Điều này là cần thiết để sẵn sàng trao đổi nóng)

Đây là cách tôi bắt đầu Tomcat.

Thông tin chi tiết:

  1. Tạo 3 Maven cấu hình chạy

    1,1 sạch tất cả các dự án Maven Clean for all Projects 1.2 Build tất cả các dự án có hiện vật JAR. Bạn cần phải tự bao gồm tất cả các dự án của bạn với tùy chọn 'mpl' maven. Tùy chọn bạn có thể chạy "Maven sạch" trước khi ra mắt của cấu hình này (nhìn vào ảnh chụp màn hình) Build Jars 1.3 Compile tất cả các dự án có hiện vật WAR - Không bao bì với MavenCompile WARs

  2. Tạo cấu hình Tomcat để xây dựng hiện vật chiến tranh và bao gồm các cấu hình khác để chạy trước khi Launch enter image description here

Bây giờ khi Tomcat đang chạy nó có thể thay đổi mã hotswap (nếu JVM cho phép) hoặc đơn giản là khởi động lại máy chủ để bao gồm tất cả bạn mã mới/thay đổi. Việc rút lại này là thời gian bắt đầu dài hơn một chút của Tomcat. Đó là điều chúng tôi sẵn sàng sống cùng ..... Hiện tại

0

Tôi nghĩ rằng triển khai mã nóng chỉ hoạt động với các tạo tác phát nổ. Trong IDEA 11, tôi đổi tên thư mục đã được giải mã, bởi vì các đồ tạo tác maven ở cùng một vị trí và tên giống nhau.

+0

Triển khai nóng là một giấc mơ đối với tôi :) Tôi gặp phải sự cố "cập nhật" ngay cả khi tôi muốn triển khai lại cuộc chiến của mình với tomcat. –

+0

Bạn đang triển khai gì? Các đồ tạo tác nổ hoặc bên ngoài? –

+0

Cuộc chiến được tạo ra bởi Intellij Idea, đây là những gì tôi muốn triển khai –