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?#
- WikiPage Providers
- Search Providers
- Plugin
- Authentication and Authorization providers Wiki.Admin.Security including User and Group managers
- Administrative capabilities
- PageFilter Configuration
- And countless other interfaces.
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.

);
background-repeat:no-repeat;
background-position:top;
background-size:48px;
text-align:center;
}