J'aimerais pouvoir générer la javadoc pour mes projets maven même lorsqu'ils sont exécutés sous un JRE au lieu d'un JDK, où se trouve la commande javadoc invoquée par maven. En d'autres termes, ne pas s'appuyer sur autre chose que ce qui se trouve dans le JRE et ce que Maven peut télécharger et utiliser comme artefacts.
Existe-t-il un moyen simple de générer des javadocs avec Maven sans avoir à utiliser du code qui se trouve uniquement dans le JDK ?
EDIT : Apparemment il est important de comprendre por qué Je veux le faire. Nous sommes une petite équipe au sein d'une grande organisation qui publie des versions annuelles de sa suite de produits, que nos clients mettent ensuite à niveau quand cela leur convient (en raison de l'ampleur des déploiements, cela coûte cher et prend du temps, il est donc courant de sauter une ou plusieurs versions) et nous gagnons notre vie en étant capables de fournir des corrections de bogues et de nouvelles fonctionnalités à court terme pour les déploiements existants, quelle que soit la version utilisée par le client en question. Par exemple, j'ai récemment corrigé un bogue pour un composant que j'ai écrit il y a cinq ans et qui n'avait pratiquement pas été modifié depuis.
La stabilité à long terme de notre processus de construction est donc très importante pour nous, tout comme la possibilité d'utiliser les nouvelles versions de Java dès qu'elles sont disponibles. Nous avons migré l'ensemble de notre environnement de construction vers Maven - ce qui nous permet d'avoir des artefacts gelés en permanence dans Maven Central - et nous avons maintenant commencé à examiner ce que nous devons faire d'autre.
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 réduire au minimum nos dépendances à l'égard de l'environnement Java sous-jacent, de préférence au simple JRE. Nous sommes en train de remplacer complètement javac du JDK par le compilateur Eclipse qui est disponible à partir de Maven Central, et maintenant nous nous penchons sur la génération de javadoc.
3 votes
+1, excellente question !
0 votes
Je crois que javadocs n'est fourni qu'avec jdk, car il fait partie des options de la commande du compilateur java, mais je ne suis pas sûr à 100%.
0 votes
Je pense que c'est spécifique à maven, mais il est toujours possible de réinventer la roue : écrire une bibliothèque qui analyse les fichiers .java et génère les fichiers html, je ne vois pas de raison de le faire, mais c'est une solution qui peut fonctionner dans les conditions décrites.
0 votes
Vous pouvez extraire le fichier tools.jar d'un JDK et écrire un plugin maven pour appeler la classe Javadoc Main, cf. Javadoc principal
0 votes
@Dgrin91 Javadoc est un outil distinct, qui ne fait pas partie du compilateur.
0 votes
@matheszabi, c'est peut-être un peu exagéré de dire "facile".
1 votes
Par curiosité, pourquoi ? On dirait plutôt que vous voulez créer une distro, et non "exécuter un projet Maven", qui est une tâche de développement.
0 votes
@DaveNewton pour être capable de faire une construction complète de notre logiciel avec la seule exigence qu'un JRE soit installé. Je ne sais pas d'où vous vient l'idée d'une distribution, mais je peux vous assurer que ce n'est pas le but recherché ici.
0 votes
Ce ne sera pas possible, vous avez évidemment besoin du JDK pour compiler. Pourquoi obliger les gens à faire une compilation quand vous pouvez leur donner une distribution ?
0 votes
@DaveNewton Je sais pertinemment qu'il est possible de compiler avec maven en utilisant le compilateur Eclipse. Je ne veux pas personnes pour faire une construction. Je veux notre pour ne nécessiter qu'un JRE et tout ce que Maven veut télécharger. Pouvez-vous nous aider à réaliser la partie javadoc ?
0 votes
Il n'est pas possible de "faire une construction complète" avec seulement un JRE. La question comporte une contradiction dans les termes.
0 votes
@EJP Veuillez consulter le site gabiaxel.com/2011/10/replacing-javac-with-eclipse-compiler.html . La partie supplémentaire à réaliser est que le compilateur eclipse est téléchargé par maven lui-même.
3 votes
Alors ? Quel est le problème d'utiliser un JDK ? Comment allez-vous exécuter la commande JAR ? jarsigner ? rmic ? idlj ? ... ? Vous pouvez vous battre contre le packaging standard JDK/JRE autant que vous voulez, et peut-être arriver à faire fonctionner quelque chose, mais quel est l'intérêt ? Vous ne faites que vous mettre dans le pétrin.
0 votes
@EJP merci de partager votre opinion. Si vous avez également une opinion sur ce que je demande réellement, j'aimerais l'entendre aussi.
0 votes
Alors peut-être que votre question aurait dû inclure le reste des informations que vous ne partagez que maintenant - sans aucun contexte que vous êtes susceptible de faire comprendre aux gens.
0 votes
@DaveNewton Je ne vois pas pourquoi ces informations supplémentaires sont importantes. La question est simple : comment puis-je créer des javadoc avec maven en utilisant uniquement un JRE ? Comment puis-je mieux le formuler ?
0 votes
@ThorbjørnRavnAndersen Je sais que vous ne pouvez pas, même si j'ai vu beaucoup de discussions pour essayer de comprendre. por qué Il s'agit d'une exigence ou de ce que le point de faire cela est. Puisque vous attendez déjà de vos utilisateurs qu'ils s'occupent de Maven et de ses problèmes associés, il n'est pas déraisonnable de supposer que (a) ils ont déjà ont un JDK, et/ou (b) ils ne seraient pas mieux servis par une distro. Vous ne pouvez pas décider de la façon dont les gens répondent à vos questions, et si vous ne fournissez pas un contexte raisonnable, vous êtes sûr que les gens vont se demander pourquoi vous faites ce que vous faites. Bonne chance.
0 votes
@DaveNewton Je ne sais pas pourquoi vous parlez d'"utilisateurs". Comme nous l'avons mentionné précédemment, cela concerne uniquement notre propre équipe et seuls les "développeurs" s'en chargent, pas les "utilisateurs". La raison est très simple : en définissant toutes les exigences sous forme d'artefacts maven (ce qui est l'effet secondaire de l'utilisation du compilateur Eclipse au lieu de javac dans le JDK), nous avons le plus grand contrôle possible sur notre environnement de construction pendant très longtemps. Oracle a récemment annoncé que javac ne supportera que trois versions en arrière, ce qui signifie que la mise à niveau pourrait briser notre processus de construction actuel (oui, nous supportons les déploiements 1.4).
0 votes
@DaveNewton donc, lorsque c'est notre propre équipe qui a besoin de faire cela dans le cadre du processus de travail quotidien, alors cela n'a pas de sens de parler de distributions etc etc, car il s'agit - si tout va bien - juste d'une question de maven téléchargeant les artefacts appropriés et créant ensuite l'artefact javadoc. Les éléments que nous envoyons aux clients devraient être identiques (donc pas d'"utilisateurs" ou de "distributions" non plus). C'est important pour nous car nous avons des cycles de support très longs - l'autre jour, j'ai corrigé un bogue dans un programme qui n'avait pas été modifié depuis cinq ans - et je suis conscient que ce n'est pas une situation courante.
2 votes
@ThorbjørnRavnAndersen Je pense qu'il est étrange que votre équipe de développement Java ne dispose pas d'un JDK, même si ce n'est que pour tester la sortie du compilateur Eclipse afin d'attraper les problèmes de compilation de cas limite - cela me semble assez risqué.
0 votes
@DaveNewton Bien sûr que nous le faisons. L'idée n'est pas d'éviter d'installer un JDK, mais d'éviter besoin de un JDK.