Author: tchemit Date: 2010-01-01 17:52:22 +0100 (Fri, 01 Jan 2010) New Revision: 1668 Modified: trunk/pom.xml trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFilePlugin.java trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFilePlugin.java trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderPlugin.java trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java Log: - use last version of mavenpom and maven-helper-plugin new api - reformat code Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-11-25 07:49:08 UTC (rev 1667) +++ trunk/pom.xml 2010-01-01 16:52:22 UTC (rev 1668) @@ -374,7 +374,7 @@ <repository.home.url>http://maven.nuiton.org/release</repository.home.url> - <helper.version>1.1.0</helper.version> + <helper.version>1.2.0-SNAPSHOT</helper.version> <jredmine.version>1.0.0</jredmine.version> <processor.version>1.0.1</processor.version> <jrst.version>1.0.0</jrst.version> Modified: trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFilePlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFilePlugin.java 2009-11-25 07:49:08 UTC (rev 1667) +++ trunk/src/main/java/org/nuiton/license/plugin/AddLicenseFilePlugin.java 2010-01-01 16:52:22 UTC (rev 1668) @@ -21,7 +21,6 @@ package org.nuiton.license.plugin; -import java.io.File; import org.apache.maven.project.MavenProject; import org.nuiton.license.plugin.repository.License; import org.nuiton.license.plugin.repository.LicenseRepository; @@ -29,6 +28,8 @@ import org.nuiton.plugin.AbstractPlugin; import org.nuiton.plugin.PluginHelper; +import java.io.File; + /** * Le goal pour ajouter le fichier LICENSE.txt dans le classpath (et le generer s'il n'existe pas). * @@ -72,7 +73,7 @@ /** * Repertoire de sortie des sources. * - * @parameter expression="${helper.outputDirectory}" default-value="target/generated-sources/resources" + * @parameter expression="${helper.outputDirectory}" default-value="target/generated-sources/license" * @required * @since 1.0.0 */ @@ -115,7 +116,7 @@ protected boolean verbose; /** * Un flag pour faire une copie nommée dans META-INF (prefixe avec le nom de l'artifact). - * + * <p/> * Cette option n'est utilisable que sur des modules avec un class-path (pas pour un pom) * * @parameter expression="${helper.copyToMETA_INF}" default-value="false" @@ -131,22 +132,23 @@ protected String[] extraResolver; protected License license; - public AddLicenseFilePlugin() { - super("all files are up-to-date."); - } +// public AddLicenseFilePlugin() { +// super("all files are up-to-date."); +// } protected boolean hasClassPath() { return rejectPackaging(Packaging.pom); } // @Override // protected boolean ensurePackaging() { -// return false; + // return false; //// return project != null && ("pom".equals(project.getPackaging()) || "site".equals(project.getPackaging())); // } boolean doGenerate; @Override - protected boolean init() throws Exception { + protected void init() throws Exception { +// protected boolean init() throws Exception { // must generate if file does not exist doGenerate = true; @@ -166,7 +168,7 @@ licenseFilename = licenseName; } // always execute the mojo ? - return true; +// return true; } @Override @@ -183,8 +185,9 @@ getLog().info("backup " + licenseFile); } // copy it to backup file - File backup = new File(licenseFile.getAbsolutePath() + "~"); - licenseFile.renameTo(backup); + backupFile(licenseFile); +// File backup = new File(licenseFile.getAbsolutePath() + "~"); +// licenseFile.renameTo(backup); } } @@ -201,9 +204,11 @@ copyFile(licenseFile, target); if (copyToMETA_INF) { - copyFile(licenseFile, PluginHelper.getFile(outputDirectory, "META-INF", project.getArtifactId() + "-" + licenseFile.getName())); + File destFile = PluginHelper.getFile(outputDirectory, "META-INF", project.getArtifactId() + "-" + licenseFile.getName()); + copyFile(licenseFile, destFile); } - addResourceDir(outputDirectory.getAbsolutePath()); + addResourceDir(outputDirectory, "**/*.txt"); +// addResourceDir(outputDirectory.getAbsolutePath()); } } Modified: trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFilePlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFilePlugin.java 2009-11-25 07:49:08 UTC (rev 1667) +++ trunk/src/main/java/org/nuiton/license/plugin/AddThirdPartyFilePlugin.java 2010-01-01 16:52:22 UTC (rev 1668) @@ -75,7 +75,7 @@ /** * Repertoire de sortie des classes (classpath). * - * @parameter expression="${helper.outputDirectory}" default-value="target/generated-sources/resources" + * @parameter expression="${helper.outputDirectory}" default-value="target/generated-sources/license" * @required * @since 1.0.0 */ @@ -171,9 +171,9 @@ protected String thirdPartyFileContent; protected File thirdPartyFile; - public AddThirdPartyFilePlugin() { - super("all files are up-to-date."); - } +// public AddThirdPartyFilePlugin() { +// super("all files are up-to-date."); +// } @Override protected boolean checkPackaging() { @@ -182,7 +182,8 @@ boolean doGenerate; @Override - protected boolean init() throws Exception { + protected void init() throws Exception { +// protected boolean init() throws Exception { doGenerate = true; thirdPartyFile = new File(outputDirectory, thirdPartyFilename); @@ -219,7 +220,7 @@ thirdPartyFileContent = PluginHelper.readAsString(thirdPartyFile, encoding); } - return true; +// return true; } @Override @@ -232,14 +233,16 @@ if (verbose) { getLog().info("backup " + thirdPartyFile); } - thirdPartyFile.renameTo(new File(thirdPartyFile.getAbsolutePath() + '~')); + backupFile(thirdPartyFile); +// thirdPartyFile.renameTo(new File(thirdPartyFile.getAbsolutePath() + '~')); } writeFile(thirdPartyFile, thirdPartyFileContent, encoding); } if (copyToMETA_INF) { copyFile(thirdPartyFile, new File(outputDirectory, "META-INF" + File.separator + project.getArtifactId() + "-" + thirdPartyFile.getName())); } - addResourceDir(outputDirectory.getAbsolutePath()); + addResourceDir(outputDirectory,"**/*.txt"); +// addResourceDir(outputDirectory.getAbsolutePath()); } /** @return resolve the dependency tree */ Modified: trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderPlugin.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderPlugin.java 2009-11-25 07:49:08 UTC (rev 1667) +++ trunk/src/main/java/org/nuiton/license/plugin/UpdateHeaderPlugin.java 2010-01-01 16:52:22 UTC (rev 1668) @@ -20,17 +20,7 @@ */ package org.nuiton.license.plugin; -import org.nuiton.processor.LicenseProcessor; - -import java.io.File; -import java.io.StringWriter; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; +import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; @@ -43,14 +33,19 @@ import org.nuiton.license.plugin.repository.LicenseRepositoryFactory; import org.nuiton.plugin.AbstractPlugin; import org.nuiton.plugin.PluginHelper; +import org.nuiton.processor.LicenseProcessor; +import java.io.File; +import java.io.StringWriter; +import java.util.*; +import java.util.Map.Entry; + /** * The goal to update (or add) the licence header on some files. * * @author chemit * @requiresProject true * @goal update-header - * * @since 1.0.1 */ public class UpdateHeaderPlugin extends AbstractPlugin { @@ -105,9 +100,9 @@ protected String licenseName; /** * Le type de générateur a utiliser pour encapsuler le header. + * <p/> + * Par défaut, on veut utiliser le plugin sur des fichiers sources java. * - * Par défaut, on veut utiliser le plugin sur des fichiers sources java. - * * @parameter expression="${license.generatorName}" default-value="license-java" * @required * @since 1.0.1 @@ -115,14 +110,14 @@ protected String generatorName; /** * La liste des patterns de fichiers à inclure (séparés par des virgules). - * + * <p/> * Exemple : <code>**\/*.java,**\/*.properties</code> - * + * <p/> * On recherchera alors les fichiers respectant l'un des patterns dans * tous les répertoires de sources et de tests. + * <p/> + * Par défaut, on veut utiliser le plugin sur des fichiers sources java. * - * Par défaut, on veut utiliser le plugin sur des fichiers sources java. - * * @parameter expression="${license.includes}" default-value="**\/*.java" * @required * @since 1.0.1 @@ -130,12 +125,12 @@ protected String includes = "**/*.java"; /** * La liste des patterns de fichiers à exclure (séparés par des virgules). - * + * <p/> * Exemple : <code>**\/*.java,**\/*.properties</code> - * + * <p/> * On recherchera alors les fichiers respectant l'un des patterns dans * tous les répertoires de sources et de tests. - * + * <p/> * Par défaut, on n'exclue rien. * * @parameter expression="${license.excludes}" @@ -167,7 +162,7 @@ protected String licenseResolver; /** * La template (velocity) a utiliser pour construire le header. - * + * <p/> * Cette template doit être dans le class-path ou être un fichier existant * * @parameter expression="${license.template}" default-value="/license/defaultHeader.vm" @@ -176,7 +171,7 @@ protected String template; /** * Des paramètres supplémentaires à utiliser dans la template du header. - * + * * @parameter * @since 1.0.1 */ @@ -201,7 +196,7 @@ * @parameter expression="${skipUpdateHeader}" default-value="false" * @since 1.0.3 */ - private boolean skipUpdateHeader; + protected boolean skipUpdateHeader; /** * A flag to test plugin but modify no file. * @@ -222,18 +217,26 @@ * @component role="org.nuiton.license.plugin.header.generator.HeaderGenerator" */ protected Map<String, HeaderGenerator> _generators; - /** le header a ajouter dans chaque fichier source java */ + /** + * le header a ajouter dans chaque fichier source java + */ protected String licenseHeaderContent; - /** le header complet (avec les balises de commentaires) */ + /** + * le header complet (avec les balises de commentaires) + */ protected String boxedLicenseHeaderContent; - /** la liste des chemin relatifs des sources java a traiter pour chaque repertoire contenant des sources */ + /** + * la liste des chemin relatifs des sources java a traiter pour chaque repertoire contenant des sources + */ protected Map<File, String[]> filesToTreate; - /** le timestamp utilise pour la generation*/ + /** + * le timestamp utilise pour la generation + */ protected long timestamp; - public UpdateHeaderPlugin() { - super("all files are up-to-date."); - } +// public UpdateHeaderPlugin() { +// super("all files are up-to-date."); +// } @Override public boolean isVerbose() { @@ -261,29 +264,44 @@ } @Override - public boolean init() throws Exception { + protected boolean checkSkip() { + if (skipUpdateHeader) { + getLog().info("skip flag is on, will skip goal."); + return false; + } + if (filesToTreate == null || filesToTreate.isEmpty()) { + getLog().info("No file to treate, will skip goal."); + return false; + } + return super.checkSkip(); + } + @Override + public void init() throws Exception { +// public boolean init() throws Exception { + if (skipUpdateHeader) { - return true; + return; } timestamp = System.nanoTime(); if (_generators == null) { // should never happen... - getLog().warn("no header generator found"); - return false; + throw new MojoExecutionException("no header generator found"); +// getLog().warn("no header generator found"); +// return false; } if (verbose) { - Iterator<Entry<String, HeaderGenerator>> itr = _generators.entrySet().iterator(); - while (itr.hasNext()) { - Entry<String, HeaderGenerator> next = itr.next(); + for (Entry<String, HeaderGenerator> stringHeaderGeneratorEntry : _generators.entrySet()) { + Entry<String, HeaderGenerator> next = stringHeaderGeneratorEntry; getLog().info("config - available generator : " + next.getKey()); } } if (!_generators.containsKey(generatorName.trim())) { - getLog().warn("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)"); - return false; + throw new MojoExecutionException("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)"); +// getLog().warn("the generator named '" + generatorName + "' is unknown (use generator-list goal to see all of them)"); +// return false; } HeaderGenerator generator = _generators.get(generatorName); @@ -295,50 +313,53 @@ getFilesToTreateForRoots(in, ex, compileSourceRoots, filesToTreate, null); getFilesToTreateForRoots(in, ex, testCompileSourceRoots, filesToTreate, null); - if (!filesToTreate.isEmpty()) { + if (filesToTreate.isEmpty()) { + return; + } +// if (!filesToTreate.isEmpty()) { - File templateFile = new File(template); + File templateFile = new File(template); - // verifie que la template existe (dans le class-path ou en tant que fichier) - checkResource(templateFile); + // verifie que la template existe (dans le class-path ou en tant que fichier) + checkResource(templateFile); - // recuperation de la license a utiliser - LicenseRepository factory = LicenseRepositoryFactory.newLicenseRepository(true, true, licenseResolver); - License license = factory.getLicense(licenseName); + // recuperation de la license a utiliser + LicenseRepository factory = LicenseRepositoryFactory.newLicenseRepository(true, true, licenseResolver); + License license = factory.getLicense(licenseName); - if (verbose) { - getLog().info("config - use license " + license.getName()); - getLog().info("config - use generator " + generator.getName()); - getLog().info("config - use template " + template); - } - // obtain content of license header - licenseHeaderContent = computeHeader(license, generator); + if (verbose) { + getLog().info("config - use license " + license.getName()); + getLog().info("config - use generator " + generator.getName()); + getLog().info("config - use template " + template); + } + // obtain content of license header + licenseHeaderContent = computeHeader(license, generator); - // build the comment boxed header content - boxedLicenseHeaderContent = generator.getHeader(licenseHeaderContent); - if (verbose) { - getLog().info("config - header to use\n" + boxedLicenseHeaderContent); - } - - } else { - getLog().info("no file to treate."); + // build the comment boxed header content + boxedLicenseHeaderContent = generator.getHeader(licenseHeaderContent); + if (verbose) { + getLog().info("config - header to use\n" + boxedLicenseHeaderContent); } - return true; +// } else { +// getLog().info("no file to treate."); +// } + +// return true; } @Override protected void doAction() throws Exception { - if (skipUpdateHeader) { - getLog().info("skip flag is on, the goal is skip."); - return; - } +// if (skipUpdateHeader) { +// getLog().info("skip flag is on, the goal is skip."); +// return; +// } +// +// if (filesToTreate.isEmpty()) { +// getLog().info("No file to treate."); +// return; +// } - if (filesToTreate.isEmpty()) { - getLog().info("No file to treate."); - return; - } - // create a licence processor with given header LicenseProcessor p = new LicenseProcessor(licenseHeaderContent); @@ -377,18 +398,22 @@ if (verbose) { getLog().debug("backup original file " + file); } - file.renameTo(backupFile); + renameFile(file, backupFile); +// file.renameTo(backupFile); } if (dryRun) { - processFile.delete(); + deleteFile(processFile); +// processFile.delete(); } else { - processFile.renameTo(file); + renameFile(processFile, file); +// processFile.renameTo(file); } } catch (Exception e) { getLog().warn("skip file " + file + " (could not process for reason : " + e.getMessage() + ")"); - processFile.delete(); + deleteFile(processFile); +// processFile.delete(); } finally { // toujours cleaner les états du filtre du processeur p.getLicenceFilter().reset(); @@ -399,12 +424,12 @@ /** * Construction du header a utiliser. - * + * <p/> * Le header est généré à partir de la template velocity donnée et de la * license donnée. * - * @param license - * @param generator + * @param license the license to use to compute header + * @param generator the header generator used to compute header * @return le header construit * @throws Exception pour toute erreur pendant la construction du header */ @@ -441,7 +466,7 @@ buffer.append("config - parameters for template : "); for (Object key : context.getKeys()) { - buffer.append("\n * " + key + " : " + context.get(key + "")); + buffer.append("\n * ").append(key).append(" : ").append(context.get(key + "")); } getLog().info(buffer.toString()); } Modified: trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java =================================================================== --- trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2009-11-25 07:49:08 UTC (rev 1667) +++ trunk/src/main/java/org/nuiton/license/plugin/repository/LicenseRepositoryFactory.java 2010-01-01 16:52:22 UTC (rev 1668) @@ -1,14 +1,14 @@ package org.nuiton.license.plugin.repository; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; /** - * * @author chemit * @since 1.0.3 */ @@ -18,24 +18,29 @@ * class-path directory where is the licenses repository */ public static final String JAR_LICENSE_REPOSITORY = "/META-INF/licenses"; - /** to use log facility, just put in your code: log.info(\"...\"); */ + /** + * to use log facility, just put in your code: log.info(\"...\"); + */ static private final Log log = LogFactory.getLog(LicenseRepositoryFactory.class); /** * Obtain a new repository. * * @param useJarRepository flag to use at first a jar repository - * @param load flag to load the repository - * @param extraResolvers extra baseURLs to defined extra license resolver + * @param load flag to load the repository + * @param extraResolvers extra baseURLs to defined extra license resolver * @return the instanciate and ready to use license repository - * @throws IllegalArgumentException - * @throws IOException + * @throws IOException if any problem while acquiring license repository */ - public static LicenseRepository newLicenseRepository(boolean useJarRepository, boolean load, String... extraResolvers) throws IllegalArgumentException, IOException { + public static LicenseRepository newLicenseRepository(boolean useJarRepository, boolean load, String... extraResolvers) throws IOException { List<URL> baseURLs = new ArrayList<URL>(); if (extraResolvers != null) { for (String exUrl : extraResolvers) { + if (exUrl == null) { + // skpi null url + continue; + } URL url; try { url = new URL(exUrl);