2010-07-09 27 views
6

Trình biên dịch Java cung cấp xây dựng gia tăng, do đó, javac tác vụ kiến ​​là tốt. Nhưng hầu hết các quy trình khác thì không.Làm thế nào để cấu hình xây dựng lười biếng hoặc gia tăng nói chung với Ant?

Xem xét các quy trình xây dựng, chúng chuyển đổi một số bộ tệp (nguồn) thành tập hợp tệp khác (đích).

tôi có thể phân biệt hai trường hợp ở đây:

  1. Transformator không thể mất một tập hợp con của file nguồn, chỉ có toàn bộ. Ở đây chúng tôi chỉ có thể tạo xây dựng lười biếng - nếu không có tệp nào từ nguồn được sửa đổi - chúng tôi sẽ bỏ qua quá trình xử lý.
  2. Biến áp có thể lấy một tập hợp con các tệp nguồn và tạo ra một phần kết quả - xây dựng gia tăng.

Kiến trúc bên trong, bên thứ ba hoặc các công cụ khác để triển khai xây dựng lười biếng và gia tăng là gì? Bạn có thể cung cấp một số ví dụ về tệp dựng sẵn phổ biến không?

Tôi quan tâm đến việc này để làm việc với trình biên dịch GWT nói riêng.

Trả lời

1

Liên quan đến GWT, không thể thực hiện các bản dựng gia tăng vì trình biên dịch GWT xem xét tất cả mã nguồn cùng một lúc và tối ưu hóa và inline mã. Điều này có nghĩa là mã không bị thay đổi có thể được đánh giá khác nhau, ví dụ nếu bạn bắt đầu sử dụng một phương thức từ một lớp không được thay đổi, phương thức ở bước biên dịch trước đó bị bỏ đi, nhưng bây giờ cần phải được biên dịch.

+0

Nhưng chắc chắn có thể KHÔNG có mã nào ảnh hưởng đến đầu ra của mô-đun GWT và do đó mô-đun sẽ không cần biên dịch lại. Các thay đổi ảnh hưởng đến đầu ra là bất kỳ thứ gì được bao gồm trong số cây –

+0

@Andrew Không, không cần thiết. Bởi vì trình biên dịch GWT loại bỏ tất cả các mã không được sử dụng. Vì vậy, nếu bạn bắt đầu sử dụng một phương thức từ mô-đun đó, nó sẽ không có sẵn. Cũng vì tối ưu hóa nội tuyến xảy ra trước khi JavaScript thực được tạo. Có lẽ nó sẽ có thể cache kết quả trung gian, nhưng tôi không chắc liệu điều đó có hiệu quả không, bởi vì những kết quả đó cần phải diễn giải lại và đọc/ghi vào đĩa, thay vì giữ nó trong bộ nhớ. –

+2

Nhưng nếu không có nguồn Java (được sử dụng để tạo ra đầu ra JS) đã thay đổi kể từ lần biên dịch cuối cùng, thì không cần phải biên dịch lại bất kỳ thứ gì, tối ưu hóa và nội tuyến và xóa mã bao gồm ..... –

5

Nhiệm vụ uptodate là giải pháp chung của Ant cho vấn đề này. Đó là đủ linh hoạt để làm việc trong hầu hết các tình huống mà lười biếng hoặc gia tăng biên dịch là mong muốn.

Tôi gặp vấn đề tương tự như bạn: Tôi có một mô-đun GWT như là một phần của mã của tôi và tôi không muốn trả chi phí (chi phí!) Để biên dịch lại khi tôi không cần. Giải pháp trong trường hợp của tôi trông giống như sau:

<uptodate property="gwtCompile.mymodule.notRequired" 
    targetfile="www/com.example.MyGwtModule/com.example.MyGwtModule.nocache.js"> 
    <srcfiles dir="src" includes="**"/> 
</uptodate> 

<target name="compile-mymodule-gwt" unless="gwtCompile.mymodule.notRequired"> 
    <compile-gwt-module module="com.example.MyGwtModule"/> 
</target> 
Các vấn đề liên quan