2015-05-15 16 views
9

Eclipse "Build Project" lệnh giống như Maven lệnh "mvn biên dịch"? Làm cả hai về cơ bản làm điều tương tự?Sự khác nhau giữa Eclipse Xây dựng dự án và Maven Compile lệnh

Nếu thì tại sao tôi cần thực hiện "Dự án xây dựng" trong STS sau khi chạy "cài đặt sạch mvn" để chạy ứng dụng mà không có bất kỳ sự cố nào? Chạy "mvn clean install" nên đã biên soạn dự án. Không nên làm mới dự án trong STS là đủ để chạy nó?

Nếu Không, thì Eclipse có khác biệt vì trình biên dịch Java triển khai Đặc tả ngôn ngữ Java để tạo lớp không? Nhưng sau Apache Maven link nói rằng trình biên dịch mặc định là javax.tools.JavaCompiler (Bằng cách này tôi đang sử dụng Java 1.6).

Trả lời

0

Tôi không biết Maven nhưng Eclipse xây dựng khác với xây dựng ANT của một số dự án, vì vậy nên là trường hợp với Maven. Eclipse có cơ chế xây dựng gia tăng nội bộ riêng.

Xây dựng nội bộ Eclipse (Dự án xây dựng của Eclipse hoặc Xây dựng tất cả hoặc làm sạch) và xây dựng Maven/Ant về cơ bản làm điều tương tự có nghĩa là cả hai sẽ biên dịch tệp mã nguồn. Bây giờ một sự khác biệt rõ ràng là xây dựng nội bộ Eclipse sẽ không tạo ra các tệp EAR, WAR, vv cho bạn, mà bạn sử dụng ANT/Maven.

Nếu ANT/Maven bạn chỉ định đường dẫn lớp bằng cách sử dụng các phần tử tương ứng, và suy nghĩ tương tự được thực hiện trong Eclipse bằng cách cấu hình đường dẫn xây dựng, để khi Eclipse thực hiện xây dựng nội bộ, thì các thư viện JAR hoặc thời gian chạy đó có thể được tham chiếu.

Về trình biên dịch, khi bạn xây dựng bằng Eclipse thì nó sẽ sử dụng trình biên dịch javac nội bộ của riêng nó của phiên bản Java Eclipse được đóng gói cùng. Bạn có thể tìm phiên bản Java bằng cách sử dụng Window's> Preference> Java> Compiler. Trong trường hợp xây dựng dự án của riêng bạn, nó sẽ giới thiệu JAVA_HOME của bạn.

11

Câu trả lời ngắn gọn là không, xây dựng maven và nhật thực không giống nhau.

Về cơ bản, nhật thực có cách xây dựng mọi thứ, điều này ít liên quan đến maven. Ở mức cơ bản nhất, Eclipse chỉ thực hiện việc biên dịch Java, sử dụng trình biên dịch Java của riêng nó (một phần của Eclipse JDT).

Câu trả lời chính xác về cách chúng khó phân biệt, tình hình khá phức tạp và nó phụ thuộc chính xác vào thứ gì (các plugin Eclipse) mà bạn đã cài đặt.

Để có được gần đúng nhất có thể để những gì Eclipse làm, giống như hầu hết những gì maven làm trên dòng lệnh, bạn nên cài đặt m2e (maven eclipse tooling).

M2E cố gắng làm cho hành vi của IDE Eclipse 'mô phỏng' càng chặt chẽ càng tốt với hành vi dòng lệnh của maven. Nó thực hiện điều này bằng cách cấu hình dự án eclipse của bạn. Ví dụ, thiết lập thư mục nguồn, classpath vv dựa trên poms maven. Điều này hoạt động khá tốt nếu poms của bạn không làm những điều 'ưa thích' (ví dụ: sử dụng một số plugin không phổ biến như vậy).

Khi bạn sử dụng các plugin maven trong pom của bạn để làm những thứ 'đặc biệt' như có thể tạo ra một số mã, hoặc bất cứ điều gì, thì m2e có cơ chế plugin cho phép tác giả plugin maven xác định một plugin eclipse tương ứng. làm thế nào để làm điều tương tự.

Điều này có thể bị lông, bởi vì không phải tất cả các plugin maven đều có các plugin Eclipse tương ứng, và ngay cả khi chúng thực hiện, chúng không tự động được cài đặt cho bạn vào cá thể Eclipse của bạn.

Nếu bạn chưa có plugin để 'dạy eclipse' về một số plugin của pom của bạn. M2e sẽ cung cấp cho bạn error about lifecyle mapping. Đây là dấu hiệu cho thấy lệnh m2e và maven có thể không 'làm điều tương tự' cho dự án của bạn, và tùy thuộc vào bạn để giải quyết nó bằng cách nào đó (ví dụ: bằng cách cài đặt trình cấu hình dự án Eclipse tương ứng ').

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