If you're a developer or have access to one, JSP Wiki has a huge amount of extensibility built it to enable you to extend it to meet your needs. Virtually everything can be overridden, extended or customized.

Getting Started#

  • Start up a Java project using either Maven pr Gradle with your IDE of choice.
  • Add a dependency for either
<dependency>
<groupId>org.apache.jspwiki</groupId>
<artifactId>jspwiki-main</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>
OR
<dependency>
<groupId>org.apache.jspwiki</groupId>
<artifactId>jspwiki-api</artifactId>
<version>LATEST</version>
<scope>provided</scope>
</dependency>
  • Then build out your implementations.
  • Build the project.
  • Then copy the output into JSPWiki's classpath, usually within Tomcat. Example: webapps/wiki/WEB-INF/lib
  • Make any necessary configuration changes
  • Start the server

What interfaces are available for extending?#

How do I activate or get my new capability to load?#

For Page Plugins and Filters, they need a XML file within the JAR to specify all the plugin classes. If that's there already, edit a wiki page and then it can be directly referenced via

[{com.mycompany.PluginClassHere arg1=foo arg2=bar}]

For most core components, they have be loaded via jspwiki-custom.properties. These properties are loaded in the following order

  • jspwiki-main.jar/ini/jspwiki.properties - these are the default values
  • jspwiki-custom.properties
  • All environment variables
  • All system properties

Check out the default jspwiki.properties file. It has tons of documentation in there to figure out what is what. This wiki site has tons of great into too.

For some core components, you may have to do some jar file hacking. In jspwiki-main.jar/ini/classmappings.xml there is a mappings for the default class to load for each of the core interfaces. Update that file and restart the server.