8181import java .util .LinkedList ;
8282import java .util .List ;
8383import java .util .Map ;
84+ import java .util .ServiceLoader ;
8485import java .util .Set ;
8586
8687/**
@@ -367,15 +368,6 @@ public class ShadeMojo
367368 @ Parameter ( defaultValue = "false" )
368369 private boolean shadeTestJar ;
369370
370- /**
371- * Auto-configure the mojo to use common transformers (ServicesResourceTransformer, ManifestTransformer)
372- * and filters (META-INF/*.[SF,DSA,RSA]).
373- *
374- * @since 3.2.2
375- */
376- @ Parameter ( defaultValue = "false" )
377- private boolean useDefaultConfiguration ;
378-
379371 /**
380372 * @since 1.6
381373 */
@@ -785,11 +777,6 @@ private List<ResourceTransformer> getResourceTransformers()
785777
786778 private List <ResourceTransformer > getDefaultResourceTransformers ()
787779 {
788- if ( !useDefaultConfiguration )
789- {
790- return Collections .emptyList ();
791- }
792-
793780 final List <ResourceTransformer > transformers = new LinkedList <>();
794781 if ( missTransformer ( ServicesResourceTransformer .class ) )
795782 {
@@ -801,6 +788,15 @@ private List<ResourceTransformer> getDefaultResourceTransformers()
801788 getLog ().debug ( "Adding ManifestResourceTransformer transformer" );
802789 transformers .add ( new ManifestResourceTransformer () );
803790 }
791+ for ( final ResourceTransformer transformer : ServiceLoader .load ( ResourceTransformer .class ) )
792+ {
793+ if ( !missTransformer ( transformer .getClass () ) )
794+ {
795+ continue ;
796+ }
797+ getLog ().debug ( "Adding " + transformer .getClass ().getName () + " transformer" );
798+ transformers .add ( transformer );
799+ }
804800 return transformers ;
805801 }
806802
@@ -823,8 +819,8 @@ private boolean missTransformer( final Class<?> type )
823819 private List <Filter > getFilters ()
824820 throws MojoExecutionException
825821 {
826- List <Filter > filters = new ArrayList <Filter >();
827- List <SimpleFilter > simpleFilters = new ArrayList <SimpleFilter >();
822+ List <Filter > filters = new LinkedList <Filter >();
823+ List <SimpleFilter > simpleFilters = new LinkedList <SimpleFilter >();
828824 Map <Artifact , ArtifactId > artifacts = null ;
829825
830826 if ( this .filters != null && this .filters .length > 0 )
@@ -848,39 +844,48 @@ private List<Filter> getFilters()
848844 }
849845 }
850846
851- if ( useDefaultConfiguration )
847+ // first check for backward compatibility this is not already configured explicitly
848+ boolean addExclusion = true ;
849+ if ( this .filters != null )
852850 {
853- // first check for backward compatibility this is not already configured explicitly
854- boolean addExclusion = true ;
855- if ( this .filters != null )
851+ for ( final ArchiveFilter filter : this .filters )
856852 {
857- for ( final ArchiveFilter filter : this .filters )
853+ if ( filter .getExcludes () != null
854+ && filter .getExcludes ().contains ( "META-INF/*.SF" )
855+ && filter .getExcludes ().contains ( "META-INF/*.DSA" )
856+ && filter .getExcludes ().contains ( "META-INF/*.RSA" )
857+ && "*:*" .equals ( filter .getArtifact () ) )
858858 {
859- if ( filter .getExcludes () != null
860- && filter .getExcludes ().contains ( "META-INF/*.SF" )
861- && filter .getExcludes ().contains ( "META-INF/*.DSA" )
862- && filter .getExcludes ().contains ( "META-INF/*.RSA" )
863- && "*:*" .equals ( filter .getArtifact () ) )
864- {
865- addExclusion = false ;
866- break ;
867- }
859+ addExclusion = false ;
860+ break ;
868861 }
869862 }
870- if ( addExclusion )
871- {
872- getLog ().debug ( "Adding META-INF/*.SF, META-INF/*.DSA and META-INF/*.RSA exclusion" );
863+ }
864+ if ( addExclusion )
865+ {
866+ getLog ().debug ( "Adding META-INF/*.SF, META-INF/*.DSA and META-INF/*.RSA exclusion" );
873867
874- if ( artifacts == null )
875- {
876- artifacts = getArtifactIds ();
877- }
878- simpleFilters .add ( new SimpleFilter (
879- getMatchingJars ( artifacts , new ArtifactId ( "*:*" ) ),
880- Collections .<String >emptySet (),
881- new HashSet <String >( Arrays .asList ( "META-INF/*.SF" , "META-INF/*.DSA" , "META-INF/*.RSA" ) ) ) );
868+ if ( artifacts == null )
869+ {
870+ artifacts = getArtifactIds ();
882871 }
872+ simpleFilters .add ( new SimpleFilter (
873+ getMatchingJars ( artifacts , new ArtifactId ( "*:*" ) ),
874+ Collections .<String >emptySet (),
875+ new HashSet <String >( Arrays .asList ( "META-INF/*.SF" , "META-INF/*.DSA" , "META-INF/*.RSA" ) ) ) );
876+ }
883877
878+ for ( final Filter filter : ServiceLoader .load ( Filter .class ) )
879+ {
880+ getLog ().debug ( "Adding " + filter .getClass ().getName () + " filter" );
881+ if ( SimpleFilter .class .isInstance ( filter ) )
882+ {
883+ simpleFilters .add ( SimpleFilter .class .cast ( filter ) );
884+ }
885+ else
886+ {
887+ filters .add ( filter );
888+ }
884889 }
885890
886891 filters .addAll ( simpleFilters );
0 commit comments