Class ServicesResourceTransformer

  • All Implemented Interfaces:
    ReproducibleResourceTransformer, ResourceTransformer

    public class ServicesResourceTransformer
    extends java.lang.Object
    Resources transformer that relocates classes in META-INF/services and appends entries in META-INF/services resources into a single resource. For example, if there are several META-INF/services/org.apache.maven.project.ProjectBuilder resources spread across many JARs the individual entries will all be concatenated into a single META-INF/services/org.apache.maven.project.ProjectBuilder resource packaged into the resultant JAR produced by the shading process.
    • Constructor Detail

      • ServicesResourceTransformer

        public ServicesResourceTransformer()
    • Method Detail

      • canTransformResource

        public boolean canTransformResource​(java.lang.String resource)
      • processResource

        public void processResource​(java.lang.String resource,
                                    java.io.InputStream is,
                                    java.util.List<Relocator> relocators,
                                    long time)
                             throws java.io.IOException
        Description copied from interface: ReproducibleResourceTransformer
        Transform an individual resource
        Parameters:
        resource - The resource name
        is - An input stream for the resource, the implementation should *not* close this stream
        relocators - A list of relocators
        time - the time of the resource to process
        Throws:
        java.io.IOException - When the IO blows up
      • hasTransformedResource

        public boolean hasTransformedResource()
      • modifyOutputStream

        public void modifyOutputStream​(java.util.jar.JarOutputStream jos)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • processResource

        public final void processResource​(java.lang.String resource,
                                          java.io.InputStream is,
                                          java.util.List<Relocator> relocators)
                                   throws java.io.IOException
        Description copied from interface: ResourceTransformer
        Transform an individual resource
        Specified by:
        processResource in interface ResourceTransformer
        Parameters:
        resource - The resource name
        is - An input stream for the resource, the implementation should *not* close this stream
        relocators - A list of relocators
        Throws:
        java.io.IOException - When the IO blows up