java javadoc openjdk

Generar javadoc solo con JRE



openjdk (7)

  1. Un aparte (sin responder a tu Q directamente):

    La Guía de desarrollo de Eclipse recomienda utilizar tanto el compilador de Eclipse como la herramienta JDK (para la opción de menú javadoc).

    http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fref-export-javadoc.htm

    Eclipse Generate Javadoc Wizard: ¿qué es "Javadoc Command"?

    De tus comentarios, está claro que no quieres ir por este camino, que es tu derecho :)

  2. Responda a su Q. Hay algunas herramientas javadoc de código abierto / gratuitas que puede invocar desde su herramienta de compilación:

    Pros: Trabajar fuera de JDK. Algunos tienen documentación más rica que javadoc.
    Contras: Podría tener algún comportamiento no estándar en comparación con javadoc (puede que no sea un problema para ti).

Me gustaría poder generar javadoc para mis proyectos de maven incluso cuando se ejecuta bajo un JRE en lugar de un JDK, donde se encuentra el comando javadoc invocado por maven. En otras palabras, no depender de nada sino de lo que está en el JRE y lo que Maven puede descargar y usar como artefactos.

¿Existe alguna forma fácil de generar javadocs con Maven sin tener que usar el código que solo se encuentra en el JDK?

EDITAR: Aparentemente es importante entender por qué quiero hacer esto. Somos un equipo pequeño en una organización más grande con lanzamientos anuales de nuestra suite de productos, que nuestros clientes actualizan cuando es conveniente para ellos (debido a la magnitud de las implementaciones, esto es costoso y requiere mucho tiempo, por lo que es común omitirlo). una o varias versiones) y nos ganamos la vida poder proporcionar correcciones de errores y nuevas funcionalidades con poca antelación para las implementaciones existentes en cualquier versión que esté ejecutando el cliente en cuestión. Como ejemplo, recientemente hice una corrección de errores para un componente que escribí hace cinco años, que no había sido tocado desde entonces.

Por lo tanto, la estabilidad a largo plazo de nuestro proceso de construcción es muy importante para nosotros, además de poder utilizar las nuevas versiones de Java a medida que estén disponibles. Hemos migrado nuestro entorno de construcción completo a Maven, que nos compra artefactos congelados permanentemente en Maven Central, y ahora hemos comenzado a ver qué más necesitamos hacer.

Con el reciente anuncio de que las versiones futuras de javac no admitirán objetivos antiguos ( http://openjdk.java.net/jeps/182 ), hemos llegado a la conclusión de que nuestro objetivo a largo plazo es minimizar nuestras dependencias en el entorno Java subyacente, preferiblemente a sólo la llanura JRE. Estamos en el proceso de reemplazar completamente javac desde el JDK con el compilador Eclipse que está disponible en Maven Central, y ahora nos fijamos en la generación javadoc.



Desde el FAQ de Javadoc :

String[] javadocargs = { "-d", "docs", "-sourcepath", "/home/user/src", "java.applet" }; com.sun.tools.javadoc.Main.main(javadocargs);

tools.jar necesita estar en tu classpath.


El comando que genera los documentos java en realidad se llama javadoc y solo está disponible con el JDK.


Ofrecemos una herramienta llamada DocFlex/Javadoc , que ya se menciona share por Glen Best (aunque un poco incorrectamente).

Pero antes de profundizar en esto, me gustaría proporcionar una introducción a lo que se trata.

Básicamente, Javadoc (que es proporcionado por JDK) es un llamador de dos cosas:

  1. El analizador de Java
  2. Un doclet

Javadoc comienza llamando al analizador de Java para recopilar información sobre las fuentes de Java, a partir de las cuales construye una estructura similar a DOM representada en forma de Doclet API . Entonces, llama un doclet . Este es un complemento de Javadoc que utiliza Doclet API como fuente de datos para generar cualquier tipo de salida.

Lo que ve como el JavaDoc estándar es generado por el Doclet estándar . Entonces, puedes imaginar que doclet es la parte más grande de toda la implementación de Javadoc.

Ahora, sobre nuestro software DocFlex/Javadoc . Esencialmente, es una herramienta para el rápido desarrollo de documentos especiales, que utiliza nuestra tecnología mucho más general para los generadores de documentación impulsados ​​por plantillas. (En realidad, nuestro enfoque está más bien alejado de las cosas de Javadoc. Por lo tanto, es más un subproducto de lo principal).

En nuestra interpretación, los doclets en sí (como generadores de documentación) se programan en forma de conjuntos de plantillas especiales. Esas plantillas son más similares a los scripts XSLT, pero solo conceptualmente (no utilizamos XSLT en algún lugar en el fondo). La organización similar a DOM de Doclet API nos permitió utilizar un enfoque general similar a XSLT / XPath para nuestra tecnología. Entonces, cada doclet consta de dos cosas:

  1. El interpretador de la plantilla.
  2. Un conjunto de plantillas

Aquí, el conjunto de plantillas es una parte intercambiable (que en realidad es el enfoque de nuestra herramienta).

Actualmente, proporcionamos un conjunto de plantillas JavadocPro listas para usar, que genera una salida HTML equivalente a los JavaDocs estándar (con algunas funciones adicionales importantes que no están disponibles en el Doclet Estándar). Aquí, puedes ver un demo JavaDoc generado con él:

Todo el DocFlex/Javadoc es un producto comercial. Pero también proporcionamos una edición ligera llamada DocFlex / Doclet , que es gratuita. Incluye solo el intérprete de plantillas y algunos conjuntos de plantillas listos (incluido JavadocPro ). Por lo tanto, puede usarlo para generar JavaDoc muy similar al estándar (en HTML), así como la documentación RTF.

Ahora, con respecto a la pregunta principal. ¿Puede usarse nuestra herramienta sin JDK?

No. Porque, como es un complemento de Javadoc (la parte de doclet de nuestra herramienta), todavía necesita Javadoc.

Por otro lado, lo que falta para que sea totalmente independiente de JDK es un analizador de Java, y no necesitamos un analizador de Java completo, porque no estamos generando un código ejecutable. Lo que necesitamos es algo ligero, capaz de construir una estructura como Doclet API.

Si supiéramos cuál podría ser la demanda de tal cosa, podríamos considerar desarrollar una. ¿Alguna otra pregunta? Háganos saber por correo electrónico (que se encuentra en nuestro sitio web )!


Puedes usar un producto llamado Doxygen . Normalmente se usa para crear documentación para C ++ u otros idiomas que no tienen un producto javadoc integrado.

Puede configurar Doxygen para que lea las anotaciones de javadoc y produzca resultados similares a javadoc.


Obtenga la fuente de JavaDoc desde OpenJDK y cree su propio JAR con todas las clases relevantes de JavaDoc. Escriba un plugin de maven que se base en su JAR, y llame a com.sun.tools.javadoc.Main.main desde este.

No parece que necesite abrir sus fuentes cuando use las clases de OpenJDK , debería estar bien para distribuir el complemento resultante sin restricciones severas.

Incluso si los términos no cubren las herramientas, podría escribir un complemento Open Source GPL-2 para maven y convertirlo en un producto separado que distribuya bajo GPL-2. Su producto luego descargaría e instalaría el complemento utilizando el complemento de maven plugin:download , separando así su complemento JavaDoc del resto de su código.

Por supuesto, debe ejecutar esta sugerencia por parte de su departamento legal antes de seguir este consejo.