For å kompilere og bygge plugin-en, anbefaler vi å bruke byggeverktøyet Ant fra Apache. Det finnes her: http://ant.apache.org. Eksempel-plugin-en inkluderer et byggeskript for Ant (build.xml) som bygger hele plugin-en, og oppretter en Jar-fil klar for bruk.
For å kompilere må du spesifisere stien til opinio.jar, som ligger i mappen WEB-INF/lib etter installasjon (eller du kan pakke ut filen opinio.war). Følgende linjer i build.xml trengs å konfigureres:
<property name="opinio.lib.dir" value="../lib"/>
<property name="jar.name" value="MinPlugin.jar"/>
<property name="jar.dir" value="."/>
<property name="deploy.dir" value="opinio/WEB-INF/plugins"/>
opinio.lib.dir: Plasseringen av filen opinio.jar.
jar.name: Navnet på plugin-en. Hvis plugin-en heter MinPlugin, må filen hete MinPlugin.jar.
jar.dir: Mappen der kompilerte/pakkede plugins skal plasseres.
opinio.lib.dir: Hvis Opinio er installert på systemet ditt, kan du kjøre målet "dist_copy" for å kopiere plugin-jar-filen direkte til pluginmappen for Opinio, for lettere å utvikle plugin-en (et Ant-mål er et steg i byggeskriptet, og hvert mål kan kjøres uavhengig, eller i sekvens, avhengig av hvordan skriptet er laget.
Når disse linjene er build.xml er satt opp korrekt, skal plugin-en kompilere. Når den er kompilert, blir alle filene for plugin-en pakket inn i en jar-fil. Denne skal plasseres i mappen opinio/WEB-INF/plugins. Opinio prøver å laste inn plugin-en automatisk ved oppstart. Hvis du ikke ser plugin-en i oppsettsskjermen etter omstart, se om loggfilen på applikasjonsserveren for mulige feil.
Hvis plugin-en plasseres i en Java-pakke, er det flere ting å huske på. Du må plassere .java-filene i mapper som har samme navn som pakkenavnene, slik at de kompilerte .class-navnene plasseres i disse mappene.
I innholdsfilen (.props) må du også bruke det fulle navnet på plugin-en, slik:
plugin.testpackage.MyPlugin.name=MinPlugin
plugin.testpackage.MyPlugin.author=Torgeir Lund
plugin.testpackage.MyPlugin.version=1.0
plugin.testpackage.MyPlugin.build=beta 1
plugin.testpackage.MyPlugin.docs=MyPlugin.html
plugin.testpackage.MyPlugin.depend.java=1.4
plugin.testpackage.MyPlugin.depend.Opinio.major=4
plugin.testpackage.MyPlugin.depend.Opinio.minor=0
Det finnes en eksempel-plugin, NewSurveyLogger, som er inkludert i distribusjonen som er implementert på denne måten.