diff --git a/jellydoc/plugin.jelly b/jellydoc/plugin.jelly
index 672b24a2..e3df683a 100644
--- a/jellydoc/plugin.jelly
+++ b/jellydoc/plugin.jelly
@@ -54,14 +54,13 @@
+ classpathref="doclet.classpath">
+
+
+
+
-
-
-
-
@@ -71,9 +70,12 @@
+ classpathref="doclet.classpath">
+
+
+
+
diff --git a/jellydoc/project.xml b/jellydoc/project.xml
index e0b5e4d7..778dc1ad 100644
--- a/jellydoc/project.xml
+++ b/jellydoc/project.xml
@@ -36,6 +36,16 @@
Java Developer
+
+ Emmanuel Venisse
+ evenisse
+ emmanuel@venisse.net
+
+
+ Java Developer
+
+ +18
+
diff --git a/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java b/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java
index 0ef52b4a..36d6f887 100644
--- a/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java
+++ b/jellydoc/src/main/org/apache/maven/jellydoc/TagXMLDoclet.java
@@ -63,6 +63,7 @@
package org.apache.maven.jellydoc;
import java.beans.Introspector;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringReader;
@@ -79,6 +80,7 @@ import org.xml.sax.helpers.DefaultHandler;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.Doc;
+import com.sun.javadoc.DocErrorReporter;
import com.sun.javadoc.Doclet;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.PackageDoc;
@@ -100,16 +102,20 @@ import com.sun.javadoc.Tag;
public class TagXMLDoclet extends Doclet {
private String xmlns = "jvx";
- private String encodingFormat="UTF-8";
+ private String encodingFormat = "UTF-8";
private String localName = "javadoc";
private ContentHandler cm = null;
- private String targetFileName="target/taglib.xml";
+ private String targetFileName = null;
private Attributes emptyAtts = new AttributesImpl();
- public TagXMLDoclet (RootDoc root) throws Exception {
-
+ public TagXMLDoclet (RootDoc root) throws Exception
+ {
+ readOptions(root);
+ File targetFile = new File(targetFileName);
+ targetFile.getParentFile().mkdirs();
FileOutputStream writer = new FileOutputStream(targetFileName);
OutputFormat format = OutputFormat.createPrettyPrint();
+ format.setEncoding(encodingFormat);
XMLWriter xmlWriter = new XMLWriter(writer, format);
try {
cm = xmlWriter;
@@ -401,4 +407,75 @@ public class TagXMLDoclet extends Doclet {
return false;
}
}
+
+ private void readOptions(RootDoc root)
+ {
+ String[][] options = root.options();
+ for (int i = 0; i < options.length; i++)
+ {
+ String[] opt = options[i];
+ if (opt[0].equals("-d"))
+ {
+ targetFileName = opt[1] + "/taglib.xml";
+ }
+ if (opt[0].equals("-encoding"))
+ {
+ encodingFormat = opt[1];
+ }
+ }
+ }
+
+ public static int optionLength(String option)
+ {
+ if(option.equals("-d"))
+ {
+ return 2;
+ }
+ if(option.equals("-encoding"))
+ {
+ return 2;
+ }
+ return 0;
+ }
+
+ public static boolean validOptions(String options[][],
+ DocErrorReporter reporter)
+ {
+ boolean foundEncodingOption = false;
+ boolean foundDirOption = false;
+ for (int i = 0; i < options.length; i++)
+ {
+ String[] opt = options[i];
+ if (opt[0].equals("-d"))
+ {
+ if (foundDirOption)
+ {
+ reporter.printError("Only one -d option allowed.");
+ return false;
+ }
+ else
+ {
+ foundDirOption = true;
+ }
+ }
+ if (opt[0].equals("-encoding"))
+ {
+ if (foundEncodingOption)
+ {
+ reporter.printError("Only one -encoding option allowed.");
+ return false;
+ }
+ else
+ {
+ foundEncodingOption = true;
+ }
+ }
+ }
+ if (!foundDirOption)
+ {
+ reporter.printError("Usage: javadoc -d -doclet TagXMLDoclet ...");
+ return false;
+ }
+ return true;
+ }
}
diff --git a/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java b/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java
index 5ba5e419..a67aa3fe 100644
--- a/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java
+++ b/jellydoc/src/main/org/apache/maven/jellydoc/XMLDoclet.java
@@ -59,6 +59,7 @@
package org.apache.maven.jellydoc;
import java.io.IOException;
+import java.io.File;
import java.io.FileOutputStream;
import java.util.Enumeration;
import java.util.Vector;
@@ -66,6 +67,7 @@ import java.util.Vector;
import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.ConstructorDoc;
import com.sun.javadoc.Doc;
+import com.sun.javadoc.DocErrorReporter;
import com.sun.javadoc.Doclet;
import com.sun.javadoc.ExecutableMemberDoc;
import com.sun.javadoc.FieldDoc;
@@ -99,12 +101,16 @@ public class XMLDoclet extends Doclet
private String encodingFormat="UTF-8";
private String localName = "javadoc";
private ContentHandler cm = null;
- private String targetFileName="target/javadoc.xml";
+ private String targetFileName = null;
private Attributes emptyAtts = new AttributesImpl();
public XMLDoclet (RootDoc root) throws Exception {
+ readOptions(root);
+ File targetFile = new File(targetFileName);
+ targetFile.getParentFile().mkdirs();
FileOutputStream writer = new FileOutputStream(targetFileName);
OutputFormat format = OutputFormat.createPrettyPrint();
+ format.setEncoding(encodingFormat);
XMLWriter xmlWriter = new XMLWriter(writer, format);
try
{
@@ -720,4 +726,75 @@ public class XMLDoclet extends Doclet
return false;
}
}
+
+ private void readOptions(RootDoc root)
+ {
+ String[][] options = root.options();
+ for (int i = 0; i < options.length; i++)
+ {
+ String[] opt = options[i];
+ if (opt[0].equals("-d"))
+ {
+ targetFileName = opt[1] + "/javadoc.xml";
+ }
+ if (opt[0].equals("-encoding"))
+ {
+ encodingFormat = opt[1];
+ }
+ }
+ }
+
+ public static int optionLength(String option)
+ {
+ if(option.equals("-d"))
+ {
+ return 2;
+ }
+ if(option.equals("-encoding"))
+ {
+ return 2;
+ }
+ return 0;
+ }
+
+ public static boolean validOptions(String options[][],
+ DocErrorReporter reporter)
+ {
+ boolean foundEncodingOption = false;
+ boolean foundDirOption = false;
+ for (int i = 0; i < options.length; i++)
+ {
+ String[] opt = options[i];
+ if (opt[0].equals("-d"))
+ {
+ if (foundDirOption)
+ {
+ reporter.printError("Only one -d option allowed.");
+ return false;
+ }
+ else
+ {
+ foundDirOption = true;
+ }
+ }
+ if (opt[0].equals("-encoding"))
+ {
+ if (foundEncodingOption)
+ {
+ reporter.printError("Only one -encoding option allowed.");
+ return false;
+ }
+ else
+ {
+ foundEncodingOption = true;
+ }
+ }
+ }
+ if (!foundDirOption)
+ {
+ reporter.printError("Usage: javadoc -d -doclet TagXMLDoclet ...");
+ return false;
+ }
+ return true;
+ }
}
diff --git a/jellydoc/xdocs/changes.xml b/jellydoc/xdocs/changes.xml
index 3436051a..447ca13f 100644
--- a/jellydoc/xdocs/changes.xml
+++ b/jellydoc/xdocs/changes.xml
@@ -9,6 +9,10 @@
+
+ Externalise output directory and encoding.
+ JellyDoc report works correctly now with multiproject.
+
Only register report if sources exist