Adding a Java library to the DITA-OT classpath

You can use the dita.conductor.lib.import extension point to add an additional Java library to the DITA-OT classpath parameter.

About this task

As of DITA-OT 3.1, the Java class path is managed automatically, meaning you do not (and should not) use explicit references to Java class paths in your build scripts. In particular, the old dost.class.path property has been deprecated and should not be used. If you are migrating older plug-ins that manage their class path directly, you should remove any explicit class path configuration. If your plug-in was not already using the dita.conductor.lib.import extension point to integrate its JAR dependencies you must add it.

The effective DITA-OT class path is the combination of the JAR files in the main lib/ directory and the plug-in-contributed JARs, which are listed in config/env.sh. The env.sh file is updated automatically when plug-ins are installed or removed.

Procedure

  1. If necessary, compile the Java code into a JAR file.
  2. Create a plugin.xml file that contains the following code:
    <plugin id="plugin-id">
      <feature extension="dita.conductor.lib.import" file="file"/>
    </plugin>
    where:
    • plugin-id is the plug-in identifier, for example, com.example.addjar.
    • file is the name of the JAR file, for example, myJavaLibrary.jar.
  3. Install the plug-in.

Results

The Ant or XSLT code now can make use of the Java code.

Example

In the following extended example, the myJavaLibrary.jar file performs a validation step during processing, and you want it to run immediately before the conref step.

To accomplish this, you will need to use several features:

  • The JAR file must be added to the classpath.
  • The Ant target must be added to the dependency chain for conref.
  • An Ant target must be created that uses this class, and integrated into the code.

The files might look like the following:

Figure 1. plugin.xml file
<?xml version="1.0" encoding="UTF-8"?>
<plugin id="com.example.samplejava">
  <!-- Add the JAR file to the DITA-OT CLASSPATH -->
  <feature extension="dita.conductor.lib.import" 
           file="com.example.sampleValidation.jar"/>
  <!-- Integrate the Ant code -->
  <feature extension="ant.import" file="calljava-antcode.xml"/>
  <!-- Define the Ant target to call, and when (before conref) -->
  <feature extension="depend.preprocess.conref.pre" 
           value="validateWithJava"/>
</plugin>
Figure 2. calljava-antcode.xml file
<?xml version="1.0" encoding="UTF-8"?>
<project default="validateWithJava">
  <target name="validateWithJava">
    <java classname="com.example.sampleValidation">
      <!-- The class was added to the DITA-OT classpath -->
    </java>
  </target>
</project>