Nous utilisons beaucoup de fichiers legacy Nous voulons les convertir pour quelques raisons: P>
à partir des spécifications Javadoc: Ce fichier est nouveau dans JDK 5.0, et est préféré sur Package.html. em> p> l> l>
Pour ne pas mélanger les deux types de fichiers dans la même basebase p> li>
Pour éviter que Intellij / Eclipse construit, mettez ces * fichiers * .html dans nos classes DIRS (et éventuellement dans un bocal binaire de libération) afin qu'ils se comportent comme nos autres ressources HTML normales. P> LI>
ul> package.html code> dans notre projet et nous souhaitons les convertir en fichiers
package-info.java code>. Faire cela manuellement n'est pas une option (trop de fichiers). Y a-t-il un bon moyen d'automatiser cela? P>
3 Réponses :
Vous devrez peut-être modifier le séparateur de répertoire si vous n'exécutant pas Windows. En outre, la conversion est un peu un piratage, mais cela devrait fonctionner. En dehors de la curiosité, combien de packages avez-vous ce manuel n'est pas une option?
public class Converter { public static void main(String[] args) { File rootDir = new File("."); renamePackageToPackageInfo(rootDir); } private static void renamePackageToPackageInfo(File dir) { File[] files = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return "package.html".equals(name); } }); for (File file : files) { convertFile(file); } // now recursively rename all the child directories. File[] dirs = dir.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return pathname.isDirectory(); } }); for (File subdir : dirs) { renamePackageToPackageInfo(subdir); } } private static void convertFile(File html) { // determine the FQN package name String fqpn = getPackageName(html); // check if package-info.java already exists File packageInfo = new File(html.getParent(), "package-info.java"); if (packageInfo.exists()) { System.out.println("package-info.java already exists for package: "+fqpn); return; } // create the i/o streams, and start pumping the data try { PrintWriter out = new PrintWriter(packageInfo); BufferedReader in = new BufferedReader(new FileReader(html)); out.println("/**"); // skip over the headers while (true) { String line = in.readLine(); if (line.equalsIgnoreCase("<BODY>")) break; } // now pump the file into the package-info.java file while (true) { String line = in.readLine(); if (line.equalsIgnoreCase("</BODY>")) break; out.println(" * " + line); } out.println("*/"); out.println("package "+fqpn+";"); out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // queue the package.html file for deletion //html.deleteOnExit(); } private static String getPackageName(File file) { StringBuilder path = new StringBuilder(file.getParent()); // trim the first two characters (./ or .\) path.delete(0, 2); // then convert all separators into . (HACK: should use directory separator property) return path.toString().replaceAll("\\\\", "."); } }
Je ne pense pas que ce n'est qu'un cas de renommage - voir télécharger.oracle.com/javase/1.5.0/docs/tooldocs/windows/...
Plutôt vrai. Il devrait être facile de saisir le contenu de l'intermédiaire de l'étiquette du corps HTML, de mettre cela en retrait dans un commentaire Javadoc et d'ajouter le FQN pour le colis. Je vais le mettre en place comme un projet à faire au cours de la semaine prochaine.
C'est un bon début, TNX :) Vous vous demandez simplement s'il couvre tous les cas d'angle, comme {@link ...} {@value} et ce que rien. En outre, comment les personnages d'échappement XML s'échappent-ils à cela? De plus, nous allons probablement couper () autour du
Quels cas d'angle? Cela n'effectue aucune conversion. Et vous avez raison que cela n'effectue pas correctement l'analyse correctement, mais je doute que l'outil Javadoc a fait une analyse HTML complète sur le paquet.html.
Les HREFIJ GUYS ont fait une intention de le faire pour tous les fichiers . Il a été résolu et sera probablement libéré dans la prochaine version Intellij. P>
Pour ce faire en mode batch dans l'idée: P>
package.html code> fichier li>
- Vous voyez une bannière corrige l'inspection sur le fichier li>
- Cliquez sur l'icône Paramètres à droite sur la bannière li>
- Sélectionnez "Exécuter l'inspection sur" >> "Projet entier" Li>
- Cliquez sur "Convertir en package-Info.java" >> OK LI>
- Supprimez éventuellement les lignes inappropriées (
sed -i »/ mettre @see et @ @ d" `trouver. -Name" package-info.java "` code>) li>
ul>