Ответ 1
mergeServiceFiles
объявлен именно здесь, и его реализация заключается в следующем:
/**
* Syntactic sugar for merging service files in JARs
* @return
*/
public ShadowJar mergeServiceFiles() {
try {
transform(ServiceFileTransformer.class);
} catch (IllegalAccessException e) {
} catch (InstantiationException e) {
}
return this;
}
Как вы можете видеть, он использует ServiceFileTransfomer
который определен здесь. Из его документов:
Изменено из org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java
Преобразователь ресурсов, который добавляет записи в ресурсах META-INF/services в один ресурс. Например, если имеется несколько ресурсов META-INF/services/org.apache.maven.project.ProjectBuilder, распределенных по многим JAR файлам, все отдельные записи будут объединены в один META-INF/services/org.apache.maven.project. Ресурс .ProjectBuilder упакован в результирующий JAR файл, созданный процессом затенения.