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