Générer javadoc uniquement avec JRE

je voudrais être capable de générer javadoc pour mes projets maven même si je tourne sous un JRE au lieu d'un JDK, où la commande javadoc invoquée par maven est trouvée. En d'autres termes, ne pas compter sur autre chose que ce qui est dans la JRE et ce que Maven peut télécharger et utiliser comme artefacts.

y a-t-il un moyen facile de générer des javadocs avec Maven sans avoir besoin d'utiliser du code trouvé uniquement dans le JDK?


EDIT: Apparemment, il est important de comprendre pourquoi je veux faire ce. Nous sommes une petite équipe dans une plus grande organisation avec des versions annuelles de notre suite de produits, que nos clients mettent ensuite à niveau quand il leur convient (en raison de l'ampleur des déploiements ce est coûteux et le temps exigeant, il est donc commun de sauter une ou plusieurs versions) et nous faisons une vie de pouvoir fournir des corrections de bugs et de nouvelles fonctionnalités à court préavis pour les déploiements existants sur quelle que soit la version du client en question. À titre d'exemple, j'ai récemment fait un bugfix pour un composant que j'avais écrit il y a cinq ans et qui n'avait pratiquement pas été modifié depuis.

par conséquent, la stabilité à long terme de notre processus de construction est très importante pour nous ainsi que la possibilité d'utiliser de nouvelles versions de Java à mesure qu'elles deviennent disponibles. Nous avons migré notre environnement complet de construction à Maven - qui nous achète des artefacts gelés en permanence à Maven Central - et avons maintenant commencé à regarder sur ce que nous devons faire.

avec l'annonce récente que les futures versions de javac ne supporteront pas les anciennes cibles ( http://openjdk.java.net/jeps/182 ) nous avons conclu que notre objectif à long terme est de minimiser nos dépendances sur L'environnement Java sous-jacent, de préférence à JRE. Nous sommes en train de remplacer complètement javac du JDK avec le compilateur Eclipse qui est disponible à partir de Maven Central, et maintenant nous regardons à la génération de la javadoc.

27
demandé sur Thorbjørn Ravn Andersen 2013-06-11 19:29:03

7 réponses

obtenez la source du JavaDoc à partir de L'OpenJDK , et construisez votre propre pot à partir de celui-ci avec toutes les classes JavaDoc pertinentes. Écrivez un plugin maven qui s'appuie sur votre pot, et appelez com.sun.tools.javadoc.Main.main à partir de celui-ci.

Il ne ressemble pas à vous devez ouvrir vos sources lors de l'utilisation de OpenJDK les classes de , vous devriez être OK pour distribuer la résultante de plug-in sans de sévères restrictions.

même si les termes ne couvrent pas les outils, vous pourriez écrire un plugin Open Source GPL-2 pour maven , et en faire un produit séparé que vous distribuez sous GPL-2. Votre produit téléchargerait alors et installerait le plugin en utilisant maven plugin:download , séparant ainsi votre plugin JavaDoc du reste de votre code.

bien sûr, vous devriez soumettre cette suggestion à votre service juridique avant de suivre cet avis.

11
répondu dasblinkenlight 2017-05-23 12:05:28
  1. d'Un côté (ne pas répondre à ta question directement):

    le guide de développement Eclipse recommande d'utiliser à la fois le compilateur Eclipse et L'outil JDK (pour l'option menu javadoc).

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

    Eclipse Generate Javadoc Wizard: qu'est-ce que "Javadoc Command"?

    de vos commentaires, il est clair que vous ne voulez pas aller par là, ce qui est votre droit :)

  2. réponse à votre Q. Il y a quelques outils javadoc open source / free que vous pouvez invoquer à partir de votre outil de construction:

    Pros: travail en dehors de JDK. Certains ont une documentation plus riche que javadoc.

    Inconvénients: peut-être un comportement non standard par rapport à javadoc (peut-être pas un problème pour vous).

7
répondu Glen Best 2017-05-23 12:21:04

vous pouvez utiliser un produit appelé Doxygen . Il est généralement utilisé pour créer de la documentation pour C++ ou d'autres langages qui n'ont pas de produit javadoc intégré.

vous pouvez configurer Doxygen pour lire les annotations javadoc et un produit similaire à la sortie javadoc.

2
répondu Andrew T Finnell 2013-07-15 00:50:22

la commande qui génère les docs java est en fait appelée javadoc et elle n'est disponible qu'avec le JDK.

1
répondu Ayman 2013-06-12 18:57:16

From the Javadoc FAQ :

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

outils.jar doit être dans votre chemin de classe.

1
répondu RealHowTo 2013-07-14 19:23:31

nous offrons un outil appelé DocFlex/Javadoc , qui est déjà mentionné ici par Glen Best (bien qu'un peu incorrectement).

mais avant d'aller plus loin, je voudrais vous présenter ce dont il s'agit.

fondamentalement, Javadoc (qui est fourni par JDK) est un appelant de deux choses:

  1. La Java de l'analyseur
  2. Un doclet

Javadoc commence par appeler L'analyseur Java pour collecter des informations sur les sources Java, à partir desquelles il construit une structure DOM - comme représenté sous la forme de doclet API . Puis, il appelle un doclet . Il s'agit d'un plug-in Javadoc qui utilise L'API Doclet comme source de données pour générer par elle tout type de sortie.

Ce que vous voyez comme le JavaDoc standard est généré par le Doclet Standard . Donc, vous pouvez imaginer que doclet est la plus grande partie de L'implémentation Javadoc.

maintenant, à propos de notre logiciel DocFlex/Javadoc . Essentiellement, c'est un outil pour le développement rapide de doclets spéciaux, qui utilise notre technologie beaucoup plus générale pour les générateurs de documentation à base de gabarits. (En fait, notre objectif est plutôt éloigné de Des trucs de Javadoc. Donc, il est plus un sous-produit de la chose principale).

selon notre interprétation, les doclets eux-mêmes (en tant que générateurs de documentation) sont programmés sous la forme de jeux de gabarits Spéciaux. Ces modèles s'apparentent davantage à des scripts XSLT, mais conceptuellement seulement (nous n'utilisons pas XSLT quelque part en arrière-plan). L'organisation de type DOM de L'API Doclet nous a permis d'utiliser une approche générale de type XSLT/XPath pour notre technologie. Ainsi, chaque doclet se compose de deux choses:

  1. Le modèle de l'interpréteur
  2. Un modèle de série

ici, le template set est une pièce interchangeable (qui est en fait le centre de notre outil).

Actuellement, nous fournissons un prêt-à-l'utilisation JavadocPro template set, qui génère la sortie HTML équivalent à la JavaDocs standard (avec certains importants fonctions supplémentaires non disponibles dans le Doclet Standard). Ici, vous pouvez voir un Démo JavaDoc généré avec elle:

enter image description here

L'ensemble DocFlex/Javadoc est un produit commercial. Mais nous fournissons également une édition légère de celui-ci appelé DocFlex/Doclet , qui est gratuit. Il inclut seulement l'interpréteur de modèle et quelques ensembles de modèles prêts (y compris JavadocPro ). Ainsi, vous pouvez l'utiliser pour générer JavaDoc très similaire à la version standard (en HTML) ainsi que de la documentation RTF.


maintenant, concernant la question principale. Notre outil sans JDK?

Pas de. Parce que, en tant que plug-in Javadoc (la partie doclet de notre outil), il a encore besoin de Javadoc.

d'un autre côté, ce qui manque pour le rendre totalement indépendant de JDK est un Java analyseur, et nous n'avons pas besoin d'un analyseur Java complet pour cela, parce que nous ne générons pas de code exécutable. Ce qu'il nous faut, c'est quelque chose de léger, capable de construire une structure comme L'API Doclet.

si nous savions ce que pourrait être une demande pour une telle chose, nous pourrions envisager d'en développer une. D'autres questions? Faites-nous savoir par email (trouvé sur notre site )!

1
répondu Leonid Rudy 2017-05-23 11:49:12

pourquoi ne pas télécharger javadoc source à http://docs.oracle.com/javase/6/docs/technotes/guides/javadoc/standard-doclet.html#source

et de le reconstruire pour répondre à vos besoins en maven

1
répondu blganesh101 2013-07-19 11:15:14