Compiling the Plugin
Prev | Chapter 18. Implementing a Simple Plugin | Next

## Compiling the Plugin

We have already outlined the contents of the user action catalog, the properties file and the documentation file in our earlier discussion. The final step is to compile the source file and build the archive file that will hold the class files and the plugin's other resources.

Publicly released plugins include with their source a makefile in XML format for the Ant utility. The format for this file requires few changes from plugin to plugin. Here is the version of `build.xml` used by QuickNotepad and many other plugins:

    <project name="QuickNotepad" default="dist" basedir=".">

      <property name="jedit.install.dir"  value="../.."/>
      <property name="jar.name"  value="QuickNotepad.jar"/>

      <property name="install.dir"  value=".."/>

      <path id="project.class.path">
        <pathelement location="${jedit.install.dir}/jedit.jar"/>
        <pathelement location="."/>
      </path>

      <target name="compile">
        <javac
          srcdir="."
          deprecation="on"
          includeJavaRuntime="yes"
        >
          <classpath refid="project.class.path"/>
        </javac>
      </target>

      <target name="dist" depends="compile">
        <mkdir dir="${install.dir}"/>
        <jar jarfile="${install.dir}/${jar.name}">
          <fileset dir=".">
            <include name="**/*.class"/>
            <include name="**/*.props"/>
            <include name="**/*.html"/>
            <include name="actions.xml"/>
            <include name="dockables.xml"/>
          </fileset>
        </jar>
      </target>
    </project>

For a full discussion of the `Ant` file format and command syntax, you should consult the Ant documentation site. Modifying this makefile for a different plugin will likely only require three changes:

- the name of the plugin;

- the choice of compiler (made by inserting and deleting the comment character `'#'`); and

- the classpath variables for `jedit.jar` any plugins this one depends on.

Prev | Up | Next
Plugin Documentation | Home | Reloading the Plugin