Eclipse đã có khái niệm về các bản dựng gia tăng. Điều này cực kỳ hữu ích vì nó tiết kiệm rất nhiều thời gian.
Cái này hữu ích như thế nào
Giả sử bạn vừa thay đổi một tệp .java. Các trình xây dựng gia tăng sẽ có thể biên dịch mã mà không phải biên dịch lại mọi thứ (sẽ mất nhiều thời gian hơn).
Bây giờ có vấn đề gì với Maven Plugins
Hầu hết các plugin maven không được thiết kế cho các bản dựng tăng dần và do đó nó tạo ra rắc rối cho m2e. m2e không biết mục tiêu plugin là thứ gì đó rất quan trọng hoặc nếu nó không liên quan. Nếu nó chỉ thực thi mọi plugin khi một tệp duy nhất thay đổi, nó sẽ mất rất nhiều thời gian.
Đây là lý do tại sao m2e dựa vào thông tin siêu dữ liệu để tìm ra cách xử lý thực thi. m2e đã đưa ra các tùy chọn khác nhau để cung cấp thông tin siêu dữ liệu này và thứ tự ưu tiên như dưới đây (cao nhất đến thấp nhất)
- tệp pom.xml của dự án
- cha mẹ, ông bà và các tập tin pom.xml khác
- [m2e 1.2+] tùy chọn không gian làm việc
- cài đặt phần mở rộng m2e
- [m2e 1.1+] siêu dữ liệu ánh xạ vòng đời được cung cấp bởi plugin maven
- siêu dữ liệu ánh xạ vòng đời mặc định được vận chuyển với m2e
1,2 đề cập đến việc chỉ định phần Quản lý plugin trong thẻ của tệp pom của bạn hoặc bất kỳ phụ huynh nào. M2E đọc cấu hình này để định cấu hình dự án. Đoạn trích dẫn hướng dẫn m2e bỏ qua các mục tiêu jslint
và compress
mục tiêu của plugin yuicompressor-maven-plugin
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
3) Trong trường hợp bạn không thích làm ô nhiễm tệp pom của mình bằng siêu dữ liệu này, bạn có thể lưu trữ tệp này trong tệp XML bên ngoài (tùy chọn 3). Dưới đây là tệp ánh xạ mẫu hướng dẫn m2e bỏ qua các mục tiêu jslint
và compress
mục tiêu của plugin yuicompressor-maven-plugin
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>compress</goal>
<goal>jslint</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
4) Trong trường hợp bạn không thích bất kỳ tùy chọn nào trong 3 tùy chọn này, bạn có thể sử dụng trình kết nối m2e (tiện ích mở rộng) cho plugin maven. Trình kết nối sẽ lần lượt cung cấp siêu dữ liệu cho m2e. Bạn có thể xem ví dụ về thông tin siêu dữ liệu trong trình kết nối tại liên kết này . Bạn có thể nhận thấy rằng siêu dữ liệu đề cập đến một cấu hình. Điều này đơn giản có nghĩa là m2e sẽ giao trách nhiệm cho lớp java cụ thể được cung cấp bởi tác giả mở rộng. Trình cấu hình có thể định cấu hình dự án (như nói thêm các thư mục nguồn bổ sung, v.v.) và quyết định có thực thi plugin maven thực tế trong quá trình xây dựng gia tăng không (nếu không được quản lý đúng cách trong cấu hình, nó có thể dẫn đến các bản dựng dự án vô tận)
Tham khảo các liên kết này để biết ví dụ về cấu hình ( link1 , link2 ). Vì vậy, trong trường hợp plugin là thứ có thể được quản lý thông qua trình kết nối bên ngoài thì bạn có thể cài đặt nó. m2e duy trì một danh sách các trình kết nối như vậy được đóng góp bởi các nhà phát triển khác. Đây được gọi là danh mục khám phá. m2e sẽ nhắc bạn cài đặt trình kết nối nếu bạn chưa có bất kỳ siêu dữ liệu ánh xạ vòng đời nào để thực hiện thông qua bất kỳ tùy chọn nào (1-6) và danh mục khám phá có một số tiện ích mở rộng có thể quản lý việc thực thi.
Hình ảnh dưới đây cho thấy cách m2e nhắc bạn cài đặt trình kết nối cho plugin-helper-maven-plugin.
.
5) m2e khuyến khích các tác giả plugin hỗ trợ xây dựng và cung cấp ánh xạ vòng đời trong chính maven-plugin. Điều này có nghĩa là người dùng sẽ không phải sử dụng bất kỳ ánh xạ hoặc trình kết nối vòng đời bổ sung nào. Một số tác giả plugin đã thực hiện điều này
6) Theo mặc định, m2e giữ siêu dữ liệu ánh xạ vòng đời cho hầu hết các plugin được sử dụng phổ biến như maven-Trình biên dịch-plugin và nhiều plugin khác.
Bây giờ trở lại câu hỏi: Có lẽ bạn chỉ có thể cung cấp bỏ qua ánh xạ vòng đời trong 1, 2 hoặc 3 cho mục tiêu cụ thể đó đang tạo ra rắc rối cho bạn.