1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.assembly.filter;
20
21 import javax.inject.Named;
22
23 import java.nio.file.Paths;
24
25 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
26
27
28
29
30 @Named("metaInf-services")
31 public class MetaInfServicesHandler extends AbstractLineAggregatingHandler {
32
33 private static final String SERVICES_PATH_PREFIX = "META-INF/services/";
34
35 @Override
36 protected String getOutputPathPrefix(final FileInfo fileInfo) {
37 return Paths.get(fileInfo.getName()).getParent().toString() + "/";
38 }
39
40 @Override
41 protected boolean fileMatches(final FileInfo fileInfo) {
42 final String path = fileInfo.getName();
43
44 String leftover = null;
45 if (path.startsWith(SERVICES_PATH_PREFIX)) {
46 leftover = path.substring(SERVICES_PATH_PREFIX.length());
47 } else if (path.startsWith("/META-INF/services/")) {
48 leftover = path.substring(SERVICES_PATH_PREFIX.length() - 1);
49 }
50
51 return leftover != null && leftover.length() > 0;
52 }
53 }