0

I want to make executable jar file using apache shade plugin. The project is a webapp with a bunch of jsp s. We are using embedded jetty with jasper jsp engine. Some jstl tag are used in these jsp's. So I need to properly pack all the tld files in my resulting jar. Now we are using a custom transformer for maven shade plugin to place all tld files into WEB-INF/META-INF root directory. I wonder if there is a way of doing it without using a custom transformer. Can it be done with standard shade transformers?

UPD. Jetty, apache-jsp, apache-jstl libs version 9.2.13.v20150730

maven shade config :

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <dependencies>
                    <dependency>
                        <groupId>com.company</groupId>
                        <artifactId>shade-resource-transformers</artifactId>
                        <version>1.0.2</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>                             
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <shadedClassifierName>shade</shadedClassifierName>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.company.application.Server</mainClass>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                <transformer
                                        implementation="com.company.build.maven.shade.transformer.TldResourceTransformer">
                                    <tldDestFolder>WebRoot/WEB-INF/META-INF/</tldDestFolder>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

As you can see we use custom tranformer here.

Enabling jsp support:

Configuration.ClassList classlist = Configuration.ClassList
        .setServerDefault(server);
classlist.addBefore(
        "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
        "org.eclipse.jetty.annotations.AnnotationConfiguration");
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
pomkine
  • 1,605
  • 4
  • 18
  • 29
  • What have you tried? What are your error messages? What version of Jetty? What version of Jasper? What does your shade configuration look like? How are you setting up your Jasper JSP environment in embedded jetty (it can be rather involved)? How are you setting up your JSTL environment in embedded jetty? What does your embedded jetty classpath look like (need to know the tree of classloaders)? – Joakim Erdfelt Nov 23 '15 at 15:53
  • @JoakimErdfelt It's rather a question about some kind of best practice of building fat jars with jstl support. I have all working now when I use custom shade transformer to add tld files in a proper place, where jasper can find it. I updated my question with the info you requested except classloaders. How can I get it? – pomkine Nov 23 '15 at 16:27

0 Answers0