leonardehrenfried / jspc-maven-plugin

Maven JSP precompilation plugin
https://leonardehrenfried.github.io/jspc-maven-plugin/compile-mojo.html
Apache License 2.0
30 stars 20 forks source link
jasper java precompiler-plugins

JSPC Maven Plugin

Build Status Maven Central

This plugin precompiles JSPs. It is a fork of jetty-jspc-maven-plugin and configured as follows:

<build>
....
<plugin>
 <groupId>io.leonard.maven.plugins</groupId>
  <artifactId>jspc-maven-plugin</artifactId>
  <version>${ENTER_VERSION_HERE}</version>
   <executions>
    <execution>
     <id>jspc</id>
     <goals>
     <goal>compile</goal>
    </goals>
    <configuration>
    </configuration>
  </execution>
 </executions>
</plugin>
...
</build>

It has the following improvements compared to jetty-jspc-maven-plugin:

The compiler used by default in this plugin is Apache Jasper 10.

If the Jasper compiler version needs to be overloaded, the plugin must be configured as follows:

<build>
  ....
  <plugin>
    <groupId>io.leonard.maven.plugins</groupId>
    <artifactId>jspc-maven-plugin</artifactId>
    <version>${ENTER_VERSION_HERE}</version>
    <executions>
      <execution>
        <id>jspc</id>
        <goals>
          <goal>compile</goal>
        </goals>
        <configuration />
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper</artifactId>
        <version>${ENTER_JASPER_VERSION_HERE}</version>
        <exclusions>
          <exclusion>
            <groupId>org.eclipse.jdt</groupId>
            <artifactId>ecj</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jdt</groupId>
        <artifactId>ecj</artifactId>
        <version>3.36.0</version>
      </dependency>
    </dependencies>
  </plugin>
  ...
</build>

Full documentation of the goal is available at https://leonardehrenfried.github.io/jspc-maven-plugin/compile-mojo.html

Compatibility Matrix

Comparison of precompiler plugins

https://tcollignon.github.io/2016/12/04/How-to-compile-JSP-with-Tomcat-and-Maven-faster.html

Use another JSP compiler

By default this plugin use org.apache.jasper.compiler.JDTCompiler (see compilerClass goal option). But if the number of threads is over 2, this compiler has too much synchronization overheas and hence is no very not very performant.

To improve this is possible to user another compilerClass org.apache.jasper.compiler.ParallelJDTCompiler, which reduces synchronization.

Note : With Tomcat 9 the compiler org.apache.jasper.compiler.ParallelJDTCompiler will not work very well. It needs some fix. We advice to use the standard org.apache.jasper.compiler.JDTCompiler instead.

Release process

  1. make release
  2. make commit-site