Dlaczego nie zbadacie go w kodzie samodzielnie? mergeServiceFiles
deklaruje dokładnie here a jego realizacja jest następujący:
/**
* Syntactic sugar for merging service files in JARs
* @return
*/
public ShadowJar mergeServiceFiles() {
try {
transform(ServiceFileTransformer.class);
} catch (IllegalAccessException e) {
} catch (InstantiationException e) {
}
return this;
}
Jak widać używa ServiceFileTransfomer
który jest zdefiniowany here. Z jego dokumentów:
Modified od org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java
transformatora zasobów, które dołącza wpisy w META-INF/zasobów usług w jeden zasób. Na przykład, jeśli istnieje kilka zasobów META-INF/services/org.apache.maven.project.ProjectBuilder rozmieszczonych w wielu plikach JAR, poszczególne wpisy będą połączone w jeden obiekt META-INF/services/org.apache. maven.project.ProjectBuilder resource zapakowany w wynikowy plik JAR wygenerowany przez proces cieniowania.