Tại sao bạn không tự mình điều tra mã đó? mergeServiceFiles
được khai báo chính xác here và thực hiện của nó là như sau:
/**
* Syntactic sugar for merging service files in JARs
* @return
*/
public ShadowJar mergeServiceFiles() {
try {
transform(ServiceFileTransformer.class);
} catch (IllegalAccessException e) {
} catch (InstantiationException e) {
}
return this;
}
Như bạn có thể thấy nó sử dụng ServiceFileTransfomer
được định nghĩa here. Từ tài liệu của nó:
Modified từ org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java
Tài biến mà gắn thêm mục trong META-INF/nguồn lực dịch vụ thành một nguồn duy nhất. Ví dụ: nếu có một số tài nguyên META-INF/services/org.apache.maven.project.ProjectBuilder trải rộng trên nhiều JAR, các mục nhập riêng lẻ sẽ là được ghép thành một đơn META-INF/services/org.apache. maven.project.ProjectBuilder tài nguyên đóng gói vào JAR kết quả được tạo ra bởi quá trình tô bóng.