2012-01-15 37 views
6

Tôi đã suy nghĩ về sự phụ thuộc trong Maven. Maven tải chúng xuống nhưng không biết phiên bản đích của JVM nào được biên dịch và với trình biên dịch gì. Điều này đặt ra hai câu hỏi:Biên dịch lại các phụ thuộc với Maven - có thể? Bất kỳ tăng hiệu suất nào?

  • Việc biên dịch phụ thuộc có mang lại thư viện phụ thuộc nhanh hơn không? Tôi đã cố gắng tìm kiếm điều này, nhưng chưa tìm thấy câu trả lời đầy đủ. Tôi phát hiện ra rằng đối với 1,6 có Split bytecode verification, được thực hiện khi biên dịch với mục tiêu 1.6.
    Ngoài ra còn có một câu hỏi Are Java 6's performance improvements in the JDK, JVM, or both? nơi mà nó được đề cập rằng phiên bản mới hơn của javac có thể tạo ra mã tối ưu hơn.
  • Có thể với Maven để thực hiện biên dịch lại các thư viện phụ thuộc không? Bạn có thể định cấu hình Maven để tải xuống các nguồn, đặt thông tin về mục tiêu 1,6 và thực hiện mvn clean install?
    Tôi biết mục tiêu số Maven Dependency plugindependency:sources. Điều đó có thể được sử dụng để tải xuống nguồn.
    Ngoài ra còn có Maven Replacer Plugin cho phép thay thế văn bản trong các tệp. Như đã nêu trong Issue 58 của nó đã được thực hiện hỗ trợ XPath cho nó.
    Có thể thực hiện nó với các plugin này cho sự phụ thuộc và cũng cho các phụ thuộc của nó để thực hiện nó? Tôi không chắc chắn làm thế nào để thực hiện nó trên các phụ thuộc - có lẽ với Maven Replacer Plugin tiêm cấu hình vào phụ thuộc giải nén pom.xml?
    Hoặc có cách đơn giản hơn để định cấu hình phiên bản java mục tiêu với cấu hình xây dựng trong cài đặt của người dùng được ưu tiên cài đặt dự án và do đó tránh pom.xml sửa đổi?

Trả lời

3

javac không tiếp tục tối ưu hóa và những gì đã có từ những ngày đầu tiên. (Và thậm chí có thể được coi là lịch sử) Nếu bạn có mã được xây dựng bởi Java 1.0 bạn có thể tìm thấy một sự cải tiến nhưng bất cứ điều gì từ hàng chục năm qua có thể là tối ưu trong mã byte như ngày nay.

Hầu hết tối ưu hóa được thực hiện trong chính JVM, và bạn sẽ thấy rằng bản cập nhật Java 6 30 chạy nhanh hơn bản cập nhật Java 6 0 ngay cả đối với cùng một mã chính xác.

1

Hãy suy nghĩ một chút về sự phụ thuộc của Maven. Theo nghĩa chung nhất, đó là một phần của phần mềm được phát triển bởi người khác, sống chu kỳ cuộc sống riêng của mình rằng:

  • được đóng gói trong một kho lưu trữ,
  • mà tồn tại trong một kho lưu trữ
  • dưới một mô tả phiên bản (nhóm, tạo tác, phiên bản).

Đó là tất cả bảo đảm của Maven. Lưu ý rằng thậm chí nó không nói đó là Java (có thể là tài nguyên hoặc các thư viện riêng). Không nhiều. Quá ít để yêu cầu tự động biên dịch lại các phụ thuộc.

+0

Đó là điểm tốt. Tôi biết rằng gói có tài nguyên không ảnh hưởng đến hiệu suất. Tôi đã xem xét trường hợp của các thư viện java được biên soạn, nếu có một cách làm thế nào để biên dịch lại chúng và buộc phiên bản java mục tiêu 1.6 (nếu nó sẽ làm cho bất kỳ sự khác biệt). Tôi đang nghĩ về nó như hệ thống xây dựng gói Linux. Có thể biên dịch các gói, nhưng chắc chắn có thể là các gói có chứa e.g. tài liệu không ảnh hưởng đến perofrmace. – Aries

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