r608 - in trunk: . eugene eugene/src/site maven-eugene-plugin maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin maven-eugene-plugin/src/site src/site
Author: tchemit Date: 2009-08-23 19:04:57 +0200 (Sun, 23 Aug 2009) New Revision: 608 Added: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java Modified: trunk/eugene/pom.xml trunk/eugene/src/site/site.xml trunk/maven-eugene-plugin/pom.xml trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java trunk/maven-eugene-plugin/src/site/site.xml trunk/pom.xml trunk/src/site/site.xml Log: bump versions + clean sites, prepare refactor of plugins parameters Modified: trunk/eugene/pom.xml =================================================================== --- trunk/eugene/pom.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/eugene/pom.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -138,7 +138,7 @@ <developer> <name>Arnaud Thimel</name> - <id>thimel</id> + <id>athimel</id> <email>thimel@codelutin.com</email> <organization>CodeLutin</organization> <timezone>+2</timezone> @@ -149,7 +149,7 @@ <developer> <name>Julien Ruchaud</name> - <id>ruchaud</id> + <id>jruchaud</id> <email>ruchaud@codelutin.com</email> <organization>CodeLutin</organization> <timezone>+2</timezone> @@ -160,7 +160,7 @@ <developer> <name>Eric Chatellier</name> - <id>chatellier</id> + <id>echatellier</id> <email>chatellier@codelutin.com</email> <organization>CodeLutin</organization> <timezone>+2</timezone> @@ -179,6 +179,17 @@ <role>Développeur</role> </roles> </developer> + + <developer> + <name>Tony Chemit</name> + <id>tchemit</id> + <email>chemit@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> </developers> <profiles> Modified: trunk/eugene/src/site/site.xml =================================================================== --- trunk/eugene/src/site/site.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/eugene/src/site/site.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -1,22 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <project name="${project.name}"> - <publishDate format="dd/MM/yyyy"/> - - <skin> - <groupId>org.nuiton</groupId> - <artifactId>maven-nuiton-skin</artifactId> - <version>1.0.0</version> - </skin> - <bannerLeft> <name>${project.name}</name> </bannerLeft> - - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>${project.organization.url}</href> - </bannerRight> <body> @@ -31,11 +18,11 @@ </menu> <menu name="Téléchargement"> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" name="Librairie (jar)"/> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" name="Javadoc (jar)"/> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" name="Sources (jar)"/> </menu> Modified: trunk/maven-eugene-plugin/pom.xml =================================================================== --- trunk/maven-eugene-plugin/pom.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/pom.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -25,6 +25,8 @@ <scope>compile</scope> </dependency> + + <!-- TODO TC-20090823 remove ant deps --> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> @@ -45,6 +47,16 @@ <artifactId>maven-project</artifactId> </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>maven-helper-plugin</artifactId> + </dependency> + </dependencies> <!-- ************************************************************* --> Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-08-23 17:04:57 UTC (rev 608) @@ -16,22 +16,19 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ package org.nuiton.eugene.plugin; +import org.nuiton.util.PluginIOContext; import java.io.File; import java.io.FileFilter; -import org.apache.maven.plugin.AbstractMojo; +import java.io.IOException; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.logging.Log; -import org.apache.tools.ant.BuildLogger; -import org.apache.tools.ant.NoBannerLogger; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.Copy; -import org.apache.tools.ant.types.FileSet; import org.dom4j.DocumentException; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.dom4j.Document; +import org.nuiton.util.PluginHelper; /** * Copy a file set to a versionned directory structure. @@ -44,9 +41,39 @@ * * @goal copyVersionFiles */ -public class CopyVersionFiles extends AbstractMojo implements FileFilter { +public class CopyVersionFiles extends EugeneAbstractMojo implements FileFilter { /** + * Les entrées sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. + * <p/> + * En sortie on demande le répertoire ou generer les classes java. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * in : target/generated-sources/models + * </p> + * out : target/generated-sources/java + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * in : target/generated-sources/test-models + * </p> + * out : target/generated-sources/test-java + * </code> + * + * @parameter + * @since 1.0.0-rc-8 + */ + protected PluginIOContext copyVersionResources; + /** * Fichiers objectModel a lire pour determiner la version. * * @parameter expression="${generator.includes}" default-value="*.*model" @@ -54,20 +81,6 @@ */ protected String includes; /** - * Répertoire source où sont situer les modeles. - * - * @parameter expression="${generator.srcGenDest}" alias="srcGenDest" default-value="target/generated-sources/models" - * @since 0.51 - */ - protected File srcDirGen; - /** - * Répertoire sources des fichiers générés à copier. - * - * @parameter expression="${generator.destDirGen}" default-value="target/generated-sources/java" - * @since 0.51 - */ - protected File destDirGen; - /** * Le dossier de destination des fichiers copiés. * * Doit contenir un nom de modele : <tt>%MODELNAME%</tt> @@ -86,13 +99,6 @@ */ protected String copyVersionFiles; /** - * Ecrase les fichiers deja presents ? - * - * @parameter expression="${generator.copyOverwrite}" default-value="false" - * @since 0.51 - */ - protected boolean copyOverwrite = false; - /** * Version trouvee dans les fichiers objectModel. * * Type string, parce que elle peut avoir la forme "1.3.2" par exemple @@ -117,6 +123,8 @@ // get log logger = getLog(); + super.execute(); + // find version and model name findVersionAndModelName(); @@ -129,15 +137,32 @@ String destDir = copyVersionDir.replace("%MODELNAME%", modelNameFound) + File.separator + versionFound; fVersionDir = new File(destDir); + if (overwrite || !checkExistence()) { + try { + PluginHelper.copyFiles(copyVersionResources.getOutput(), fVersionDir, new String[]{copyVersionFiles}, null, true); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } + } + } - boolean doCopy = true; + @Override + protected PluginIOContext getResources() { + return copyVersionResources; + } - if (!copyOverwrite) { - doCopy = !checkExistence(); - } - if (doCopy) { - copyAction(); - } + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("target", "generated-sources", "models"); + File defaultOut = getFile("target", "generated-sources", "java"); + + File defaultTestIn = getFile("target", "generated-sources", "test-models"); + File defaultTestOut = getFile("target", "generated-sources", "test-java"); + + copyVersionResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return copyVersionResources; } /** @@ -158,46 +183,48 @@ return exist; } +// /** +// * Copy hibernate files. +// * +// * Using ant task +// * @throws IOException +// */ +// protected void copyAction() throws IOException { + // creation du repertoire +// fVersionDir.mkdirs(); +// destDirGen.mkdirs(); +// +// /* Création d'un projet ant */ +// Project p = createProject(); +// +// /* Création de la tâche ant Copy */ +// Copy copy = createCopyTask(p); +// +// /* Configuration */ +// copy.setTodir(fVersionDir); +// copy.setOverwrite(true); +// +// FileSet fileSet = new FileSet(); +//// fileSet.setDir(destDirGen); +// fileSet.setDir(copyVersionResources.getOutput()); +// fileSet.setIncludes(copyVersionFiles); +// copy.addFileset(fileSet); +// +// /* Execution */ +// copy.execute(); +// } /** - * Copy hibernate files. - * - * Using ant task - */ - protected void copyAction() { - // creation du repertoire - fVersionDir.mkdirs(); - destDirGen.mkdirs(); - - /* Création d'un projet ant */ - Project project = createProject(); - - /* Création de la tâche ant Copy */ - Copy copy = new Copy(); - copy.setProject(project); - copy.setTaskName("Copy ressources"); - - /* Configuration */ - copy.setTodir(fVersionDir); - copy.setOverwrite(true); - - FileSet fileSet = new FileSet(); - fileSet.setDir(destDirGen); - fileSet.setIncludes(copyVersionFiles); - copy.addFileset(fileSet); - - /* Execution */ - copy.execute(); - } - - /** * Find version and name in object model files */ protected void findVersionAndModelName() { - File srcModelDir = srcDirGen; + //TODO TC-20090820 : iterate on all inputs + File srcModelDir = copyVersionResources.getInputs()[0]; File[] modelFiles = srcModelDir.listFiles(this); + //FIXME TC-20090820 this is a bit funny iterate and keep the last model values ? + // should iterate and do the treatment for each model for (File modelFile : modelFiles) { SAXReader saxR = new SAXReader(); Document document; @@ -218,21 +245,6 @@ } } - protected Project createProject() { - /* Création d'un projet ant */ - Project project = new Project(); - - BuildLogger log = new NoBannerLogger(); - log.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO); - log.setOutputPrintStream(System.out); - log.setErrorPrintStream(System.err); - - project.init(); - project.getBaseDir(); - project.addBuildListener(log); - return project; - } - @Override public boolean accept(File arg0) { String fullPath = arg0.getAbsolutePath(); Added: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-08-23 17:04:57 UTC (rev 608) @@ -0,0 +1,173 @@ +package org.nuiton.eugene.plugin; + +import org.nuiton.util.PluginIOContext; +import java.io.File; +import java.net.URL; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.settings.Settings; + +/** + * La classe de base pour definir des mojos dans eugene. + * + * @author chemit + * @since 1.0.0-rc-8 + */ +public abstract class EugeneAbstractMojo extends AbstractMojo { + + /** + * Maven project. + * + * @description Dépendance du projet. + * @parameter default-value="${project}" + * @readonly + * @since 1.0.0-rc-8 + */ + protected MavenProject project; + /** + * @description le settings (pour obtenir le mode offline) + * @parameter default-value="${settings}" + * @readonly + * @since 1.0.0-rc-4 + */ + protected Settings settings; + /** + * Ecrase les fichiers générés. + * + * @parameter expression="${generator.overwrite}" default-value="false" + * @since 0.50 + */ + protected boolean overwrite; + /** + * Pour activer le mode verbeux. + * + * @parameter expression="${generator.verbose}" default-value="${maven.verbose}" + * @since 1.0.0-rc-8 + */ + protected boolean verbose; + /** + * Encoding to be used for generation of files. + * + * @parameter expression="${eugene.encoding}" default-value="${project.build.sourceEncoding}" + * @since 0.60 + */ + protected String encoding; + /** + * A flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots. + * + * @parameter expression="${eugene.testPhase}" default-value="false" + * @since 0.64 + */ + protected boolean testPhase; + + /** + * + * Note : l'objet peut etre {@null} si la configuration ne definit + * pas la propriété associées dans l'implentation. + * <p/> + * + * Dans tous les cas, une fois la methode {@link #initResources()} appele, + * l'objet devrait ne plus être null! + * + * @return l'io du plugin ou {@code null} si non initialisé + * + */ + protected abstract PluginIOContext getResources(); + + /** + * Initialiser les io du plugins. + * + * @return l'io intialisé (avec les valeurs par défaut, là où rien n'a + * été renseigné). + */ + protected abstract PluginIOContext initResources(); + + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + + PluginIOContext p = initResources(); + + if ((p.getInputs() == null || p.getInputs().length == 0)) { + throw new MojoExecutionException("no input defined"); + } + if (p.getOutput() == null) { + throw new MojoExecutionException("no output defined"); + } + + p.getOutput().mkdirs(); + } + + protected PluginIOContext initResources(File defaultIn, File defaultOut, File defaultTestIn, File defaultTestOut) { + + PluginIOContext resources = getResources(); + if (resources == null) { + resources = new PluginIOContext(); + } + + // adding default inputs only if not consumed + if (resources.getInputs() == null) { + if (testPhase) { + resources.setInput(defaultTestIn); + } else { + resources.setInput(defaultIn); + } + getLog().info(" using default in : " + Arrays.asList(resources.getInputs())); + } else { + getLog().info(" in : " + Arrays.asList(resources.getInputs())); + } + + if (resources.getOutput() == null) { + if (testPhase) { + resources.setOutput(defaultTestOut); + } else { + resources.setOutput(defaultOut); + } + getLog().info(" using default out : " + resources.getOutput()); + } else { + getLog().info(" out : " + resources.getOutput()); + } + + return resources; + } + + /** + * Recupere le fichier donnée à partir de son chemin relatif sur le basedir + * du projet maven. + * + * @param paths les paths pour atteindre le fichier ou le répertoire + * + * @return le fichier de la destination + */ + protected File getFile(String... paths) { + File result = project.getBasedir(); + for (String path : paths) { + result = new File(result, path); + } + return result; + } + + /** + * Ajout dans la liste des urls et l'ensemble des urls sous forme de string, l'url + * donné. + * + * Note : l'utilisation de l'ensemble des urls sous forme de String est utile + * sinon la comparaison entre url requiere des appels reseaux et cela n'est + * pas acceptable dans notre cas (mode offline ne marcherait plus...). + * + * @param url l'url a rajouter dans la liste + * @param urls la liste des urls + * @param urlsAsString l'ensemble des urls sous forme de String + */ + protected void addUrl(URL url, List<URL> urls, Set<String> urlsAsString) { + String toString = url.toString(); + if (!urlsAsString.contains(toString)) { + urlsAsString.add(toString); + urls.add(url); + } + } +} Property changes on: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-08-23 17:04:57 UTC (rev 608) @@ -16,19 +16,21 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ package org.nuiton.eugene.plugin; +import org.nuiton.util.PluginIOContext; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.Properties; import java.util.Map.Entry; +import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Resource; -import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; @@ -48,31 +50,38 @@ * @goal generate * @projectRequired true */ -public class EugenePlugin extends AbstractMojo { +public class EugenePlugin extends EugeneAbstractMojo { /** - * Maven project. - * - * @description Dépendance du projet. - * @parameter default-value="${project}" - * @readonly - * @since 0.50 - */ - protected MavenProject project; - /** - * Répertoire source. + * Les entrées sorties du plugin. * - * @parameter expression="${eugene.srcGenDest}" alias="srcGenDest" default-value="target/generated-sources/models" - * @since 0.50 - */ - protected File srcDirGen; - /** - * Répertoire cible + * <p/> * - * @parameter expression="${eugene.destDirGen}" default-value="target/generated-sources/java" - * @since 0.50 + * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. + * <p/> + * En sortie on demande le répertoire ou generer les classes java. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * in : target/generated-sources/models + * </p> + * out : target/generated-sources/java + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * in : target/generated-sources/test-models + * </p> + * out : target/generated-sources/test-java + * </code> + * + * @parameter + * @since 1.0.0-rc-8 */ - protected File destDirGen; + protected PluginIOContext generateResources; /** * Templates à utiliser, séparés par des virgules. * @@ -103,13 +112,6 @@ */ protected String defaultPackage; /** - * Ecrase les fichiers générés - * - * @parameter expression="${eugene.overwrite}" default-value="false" - * @since 0.50 - */ - private boolean overwrite = false; - /** * An extra directory to be added to the classpath. * * @parameter expression="${eugene.extraClassPathDirectory}" @@ -117,27 +119,6 @@ */ protected File extraClassPathDirectory; /** - * Encoding to be used for generation of files. - * - * @parameter expression="${eugene.encoding}" default-value="${project.build.sourceEncoding}" - * @since 0.60 - */ - protected String encoding; - /** - * A flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots. - * - * @parameter expression="${eugene.testPhase}" default-value="false" - * @since 0.64 - */ - protected boolean testPhase; - /** - * Drapeau pour augmenter la verbosité des logs. - * - * @parameter expression="${eugene.verbose}" default-value="${maven.verbose}" - * @since 1.0.0-rc-4 - */ - protected boolean verbose; - /** * List of packages to generate (comma separated). * * If the parameter is not filled, will generate all packages. @@ -150,45 +131,123 @@ @Override public void execute() throws MojoExecutionException, MojoFailureException { - getLog().info("Generating model using : "); - getLog().info(" using template : " + templates); + getLog().info("Generating java sources from models"); + getLog().info(" includes : " + includes); + getLog().info(" using template : " + templates); getLog().info(" using defaultPackage : " + defaultPackage); - getLog().info(" generating from : " + srcDirGen + File.separator + includes); - getLog().info(" generating to : " + destDirGen); + super.execute(); - List<String> generatedPackagesAsList = new ArrayList<String>(); + File[] modelFiles = getModelFiles(); + if (modelFiles.length == 0) { + // can skip + getLog().warn("no model to treate"); + return; + } + + List<String> packages = getPackagesToGenerate(); + + if (packages == null) { + getLog().info(" generating all packages"); + } else { + getLog().info(" generating only for packages " + packages); + } + + List<Generator> generators = getGenerators(packages); + + for (Generator generator : generators) { + getLog().info("Apply " + generator.getClass().getSimpleName() + " generator"); + + //TC-20090829 fix when loading more than one model together... + generator.generate(modelFiles, generateResources.getOutput()); +// for (File modelFile : modelFiles) { +// getLog().debug(" on " + modelFile.getAbsolutePath()); +// +// // generation +// generator.generate(modelFile, destDirGen); +// } + } + + fixCompileSourceRoots(); + } + + @Override + protected PluginIOContext getResources() { + return generateResources; + } + + @Override + protected PluginIOContext initResources() { + + File defaultIn = getFile("target", "generated-sources", "models"); + File defaultOut = getFile("target", "generated-sources", "java"); + + File defaultTestIn = getFile("target", "generated-sources", "test-models"); + File defaultTestOut = getFile("target", "generated-sources", "test-java"); + + generateResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); + + return generateResources; + } + + protected List<String> getPackagesToGenerate() { + List<String> generatedPackagesAsList = null; if (generatedPackages != null && !generatedPackages.isEmpty()) { + generatedPackagesAsList = new ArrayList<String>(); for (String s : generatedPackages.split(",")) { generatedPackagesAsList.add(s); } - getLog().info(" generating packages : " + generatedPackagesAsList); - } else { - getLog().info(" generating packages : all packages"); } + return generatedPackagesAsList; + } + protected File[] getModelFiles() { + // get file to generate + // TODO improve this loop + // TODO too strange code + //TODO TC-20090820 use a DirectoryScanner which understand ant-like regex patterns :) + List<File> modelFiles = new ArrayList<File>(); + String[] includePatterns = includes.split(","); + for (File srcDirGen : generateResources.getInputs()) { + for (String includePattern : includePatterns) { + includePattern = includePattern.trim(); + boolean recursive = false; + if (includePattern.startsWith("**/")) { + recursive = true; + includePattern = includePattern.substring(3); + } + // transform pattern in java regex + includePattern = includePattern.replaceAll("\\.", "\\\\."); + includePattern = includePattern.replaceAll("\\*", ".*"); + // log java regex + if (verbose) { + getLog().info("Search for " + includePattern + " in " + srcDirGen.getAbsolutePath()); + } + List<File> currentFiles = FileUtil.find(srcDirGen, includePattern, recursive); + modelFiles.addAll(currentFiles); + } + } + return modelFiles.toArray(new File[modelFiles.size()]); + } + + protected List<Generator> getGenerators(List<String> generatedPackagesAsList) throws MojoFailureException, MojoExecutionException { // init generators Properties generatorProperties = new Properties(); generatorProperties.setProperty("defaultPackage", defaultPackage); - List<Generator> generators = new ArrayList<Generator>(); String[] templatesNames = templates.split(","); ClassLoader fixedClassLoader = fixClassLoader(); for (String templateName : templatesNames) { - // remove trailing spaces templateName = templateName.trim(); - try { Generator generator = (Generator) Class.forName(templateName, true, fixedClassLoader).newInstance(); - // configuration generator.setExcludeTemplates(Arrays.asList(excludeTemplates)); generator.setProperties(generatorProperties); generator.setOverwrite(overwrite); generator.setEncoding(encoding); generator.setGeneratedPackages(generatedPackagesAsList); - generators.add(generator); } catch (InstantiationException e) { throw new MojoFailureException("Can't instantiate generator : " + templateName, e); @@ -198,73 +257,10 @@ throw new MojoFailureException("Can't found generator : " + templateName, e); } } - - generate(generators); - - fixCompileSourceRoots(); + return generators; } /** - * Execute generators on source directory. - * - * @param generators generators - */ - protected void generate(List<Generator> generators) { - - // get file to generate - // TODO improve this loop - // TODO too strange code - List<File> modelFiles = new ArrayList<File>(); - String[] includePatterns = includes.split(","); - for (String includePattern : includePatterns) { - includePattern = includePattern.trim(); - boolean recursive = false; - if (includePattern.startsWith("**/")) { - recursive = true; - includePattern = includePattern.substring(3); - } - - // transform pattern in java regex - includePattern = includePattern.replaceAll("\\.", "\\\\."); - includePattern = includePattern.replaceAll("\\*", ".*"); - - // log java regex - getLog().debug("Search for " + includePattern + " in " + srcDirGen.getAbsolutePath()); - - List<File> currentFiles = FileUtil.find(srcDirGen, includePattern, - recursive); - modelFiles.addAll(currentFiles); - } - - generateModels(generators, modelFiles); - } - - /** - * Apply generators on models files. - * - * @param generators generators - * @param modelFiles - */ - protected void generateModels(List<Generator> generators, - List<File> modelFiles) { - - for (Generator generator : generators) { - getLog().info("Apply " + generator.getClass().getSimpleName() + " generator"); - - //TC-20090829 fix when loading more than one model together... - generator.generate(modelFiles.toArray(new File[modelFiles.size()]), destDirGen); - -// for (File modelFile : modelFiles) { -// getLog().debug(" on " + modelFile.getAbsolutePath()); -// -// // generation -// generator.generate(modelFile, destDirGen); -// } - } - - } - - /** * permet d'ajout le répertoire de génération des fichiers java dans les répertoires * de compilation du projet Maven. */ @@ -276,6 +272,8 @@ return; } + File destDirGen = generateResources.getOutput(); + if (testPhase) { if (!project.getTestCompileSourceRoots().contains( destDirGen.getPath())) { @@ -311,8 +309,9 @@ * @throws MojoExecutionException if any pb */ protected ClassLoader fixClassLoader() throws MojoExecutionException { + List<URL> urls = new ArrayList<URL>(); + Set<String> urlsAsString = new HashSet<String>(); try { - List<URL> urls = new ArrayList<URL>(); ClassLoader loader = null; if (extraClassPathDirectory != null) { if (verbose) { @@ -329,7 +328,7 @@ getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); } //TODO il faudrait peut-etre aussi ajouter les dependances ? - urls.add(relatedProject.getArtifact().getFile().toURI().toURL()); + addUrl(relatedProject.getArtifact().getFile().toURI().toURL(), urls, urlsAsString); } } if (!project.getArtifacts().isEmpty()) { @@ -340,23 +339,22 @@ for (Object o : project.getArtifacts()) { Artifact a = (Artifact) o; if (!a.getScope().equals("provided")) { - urls.add(a.getFile().toURI().toURL()); + addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); } } - // using the strict class loader with only resolved artifacts - //loader = new URLClassLoader(urls.toArray(new URL[urls.size()])); } - //if (loader == null) { // we ask to add the directory in classloader loader = getClass().getClassLoader(); if (!urls.isEmpty()) { loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), loader); } - //} return loader; } catch (MalformedURLException e) { throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); } } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-08-23 17:04:57 UTC (rev 608) @@ -16,9 +16,10 @@ * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ package org.nuiton.eugene.plugin; +import org.nuiton.util.PluginIOContext; import java.io.File; -import java.io.FileFilter; import java.io.FileOutputStream; +import java.io.IOException; import java.lang.reflect.Constructor; import java.net.MalformedURLException; import java.net.URL; @@ -36,18 +37,12 @@ import javax.xml.transform.stream.StreamSource; import org.apache.maven.artifact.Artifact; -import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; -import org.apache.maven.settings.Settings; -import org.apache.tools.ant.BuildLogger; -import org.apache.tools.ant.NoBannerLogger; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.Copy; -import org.apache.tools.ant.types.FileSet; import org.nuiton.util.FasterCachedResourceResolver; import org.nuiton.util.FileUtil; +import org.nuiton.util.PluginHelper; import org.nuiton.util.Resource; import org.nuiton.util.ResourceResolver; import org.nuiton.util.StringUtil; @@ -64,30 +59,41 @@ * Last update: $Date$ * by : $Author$ */ -public abstract class Xmi2Model extends AbstractMojo { +public abstract class Xmi2Model extends EugeneAbstractMojo { /** - * Répertoire source des fichiers XMI + * Les entrées sorties du plugin. + * + * <p/> + * + * En entrée on demande des répertoires où chercher les fichiers xmi a convertir. + * <p/> + * En sortie on demande le répertoire ou extraire les xmi et copier les resources. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * in : target/generated-sources/xmi + * </p> + * out : target/generated-sources/models + * </code> + * + * </p> * - * @parameter alias="srcXmiDest" expression="${generator.srcDirXmi}" default-value="target/generated-sources/xmi" - * @since 0.50 - */ - protected File srcDirXmi; - /** - * Des noms de fichiers xmi qu'on veut pas traiter... - * - * @parameter expression="${generator.excludeXmis}" + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * in : target/generated-sources/xmi + * </p> + * out : target/generated-sources/test-models + * </p> + * </code> + * + * @parameter * @since 1.0.0-rc-8 */ - protected String excludeXmis; + protected PluginIOContext xmiResources; /** - * Répertoire cible des fichiers générés - * - * @parameter alias="srcGenDest" expression="${generator.srcGenDest}" default-value="target/generated-sources/models" - * @since 0.50 - */ - protected File destDirModel; - /** * Nom du paquetage pour les fichiers générés * * @parameter expression="${generator.fullPackagePath}" default-value="${project.groupId}.${project.artifactId}" @@ -102,15 +108,8 @@ */ protected String extractedPackages; /** - * Ecrase les fichiers générés + * Liste des types de modeles acceptés séparés par des vigules. * - * @parameter expression="${generator.overwrite}" default-value="false" - * @since 0.50 - */ - private boolean overwrite = false; - /** - * Liste des types de model acceptés séparés par des vigules. - * * @parameter expression="${generator.acceptedXmiTypes}" default-value="xmi,uml" * @since 1.0.0-rc-4 */ @@ -123,95 +122,100 @@ */ protected String resolver; /** - * Maven project. - * - * @description Dépendance du projet. - * @parameter default-value="${project}" - * @readonly - * @since 1.0.0-rc-4 - */ - protected MavenProject project; - /** * An extra directory to be added to the classpath. * * @parameter expression="${eugene.extraClassPathDirectory}" * @since 1.0.0-rc-4 */ protected File extraClassPathDirectory; + /** - * Drapeau pour augmenter la verbosité des logs. + * Get extension. * - * @parameter expression="${eugene.verbose}" default-value="${maven.verbose}" - * @since 1.0.0-rc-4 + * @return the extension */ - private boolean verbose; + protected abstract String getExtension(); + /** - * @description le settings (pour obtenir le mode offline) - * @parameter default-value="${settings}" - * @readonly - * @since 1.0.0-rc-4 + * Get style sheet. + * + * @param model the model file used to determine the stylesheet to use + * @return the stylesheet name */ - private Settings settings; + protected abstract String getStyleSheet(File model); @Override public void execute() throws MojoExecutionException, MojoFailureException { long t0 = System.nanoTime(); + super.execute(); try { - actionXsl(); + + getLog().info("Processing XSL tranformation"); + getLog().info(" with fullPackagePath : " + fullPackagePath); + getLog().info(" with extractedPackages : " + extractedPackages); + getLog().info(" with acceptedXmiTypes : " + acceptedXmiTypes); + getLog().info(" with resolver : " + resolver); + + TransformerFactory factory = TransformerFactory.newInstance(); + + ClassLoader fixedClassLoader = fixClassLoader(); + String[] includes = getSuffixPattern("*"); + + String[] acceptedTypesAsArray = getAcceptedTypesAsArray(); + + for (File dir : xmiResources.getInputs()) { + // recuperation des fichiers a traiter + List<File> files = PluginHelper.getIncludedFiles(dir, includes, null); + + // lancement des traitements xsl sur les fichiers trouvés + // dans le repertoire + actionXsl(dir, files, factory, fixedClassLoader, acceptedTypesAsArray); + } } finally { getLog().info("xsl done in " + StringUtil.convertTime(System.nanoTime() - t0)); } - actionCopy(); - } - protected void actionXsl() throws MojoExecutionException { + getLog().info("Copy resources files"); - getLog().info("Processing XSL tranformation"); - getLog().info(" processing from " + srcDirXmi); - getLog().info(" processing to " + destDirModel); - getLog().info(" with fullPackagePath = " + fullPackagePath); - getLog().info(" with extractedPackages = " + extractedPackages); - getLog().info(" with acceptedXmiTypes = " + acceptedXmiTypes); - getLog().info(" with resolver = " + resolver); + try { + String[] excludes = getSuffixPattern("**/*"); + PluginHelper.copyFiles(xmiResources, null, excludes, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } + } - final String[] acceptedSuffixes = getAcceptedTypesAsArray(); - List<File> files = FileUtil.getFilteredElements(srcDirXmi, - new FileFilter() { + @Override + protected PluginIOContext getResources() { + return xmiResources; + } - @Override - public boolean accept(File pathname) { - if (pathname == null) { - return false; - } - for (String suffix : acceptedSuffixes) { - if (pathname.getName().endsWith(suffix)) { - return true; - } - } - return false; - } - //TC-20090820 : using recursive for xmi -// }, false); - }, true); + @Override + protected PluginIOContext initResources() { - destDirModel.mkdirs(); + File defaultIn = getFile("target", "generated-sources", "xmi"); + File defaultOut = getFile("target", "generated-sources", "models"); + File defaultTestIn = getFile("target", "generated-sources", "test-xmi"); + File defaultTestOut = getFile("target", "generated-sources", "test-models"); - TransformerFactory factory = TransformerFactory.newInstance(); + xmiResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); - ClassLoader fixedClassLoader = fixClassLoader(); + return xmiResources; + } - List<String> excludeXmisAsList = new ArrayList<String>(); - if (excludeXmis != null && !excludeXmis.isEmpty()) { - for (String s : excludeXmis.split(",")) { - excludeXmisAsList.add(s); - } + protected String[] getSuffixPattern(String prefix) { + String[] acceptedSuffixes = getAcceptedTypesAsArray(); + int max = acceptedSuffixes.length; + final String[] patterns = new String[max]; + for (int i = 0; i < max; i++) { + patterns[i] = prefix + acceptedSuffixes[i]; } + return patterns; + } + + protected void actionXsl(File dir, List<File> files, TransformerFactory factory, ClassLoader fixedClassLoader, String[] acceptedSuffixes) throws MojoExecutionException { for (File file : files) { try { - if (excludeXmisAsList.contains(file.getName())) { - getLog().info("skip excluded xmi : "+file); - continue; - } if (getLog().isDebugEnabled()) { getLog().debug("treate file : " + file); } @@ -220,15 +224,14 @@ String styleSheet = getStyleSheet(file); URL xsl = Resource.getURL(styleSheet); - // Prepare output file //TC-20090820 : using recursive for xmi // File result = new File(destDirModel, FileUtil.basename(file, // acceptedSuffixes).concat(".").concat(getExtension())); String filename = FileUtil.basename(file, acceptedSuffixes).concat(".").concat(getExtension()); - String relatifPath = file.getParentFile().getAbsolutePath().substring(srcDirXmi.getAbsolutePath().length()); - File dstDir = destDirModel; + String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length()); + File dstDir = xmiResources.getOutput(); if (!relatifPath.isEmpty()) { - dstDir = new File(destDirModel, relatifPath); + dstDir = new File(dstDir, relatifPath); dstDir.mkdirs(); } File result = new File(dstDir, filename); @@ -277,66 +280,6 @@ return result; } - protected void actionCopy() { - /* Création d'un projet ant */ - Project p = createProject(); - - /* Création de la tâche ant Copy */ - Copy copy = new Copy(); - copy.setProject(p); - copy.setTaskName("Copy ressources"); - - /* Configuration */ - copy.setTodir(destDirModel); - copy.setOverwrite(overwrite); - - FileSet fileSet = new FileSet(); - fileSet.setProject(p); - fileSet.setDir(srcDirXmi); - String excludedTypes = ""; - for (String type : getAcceptedTypesAsArray()) { - if (!excludedTypes.isEmpty()) { - excludedTypes += ","; - } - excludedTypes += "**/*" + type; - } - fileSet.setExcludes(excludedTypes); - copy.addFileset(fileSet); - - /* Execution */ - copy.execute(); - } - - protected Project createProject() { - /* Création d'un projet ant */ - Project p = new Project(); - - BuildLogger logger = new NoBannerLogger(); - logger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO); - logger.setOutputPrintStream(System.out); - logger.setErrorPrintStream(System.err); - - p.init(); - p.getBaseDir(); - p.addBuildListener(logger); - return p; - } - - /** - * Get extension. - * - * @return the extension - */ - protected abstract String getExtension(); - - /** - * Get style sheet. - * - * @param model the model file used to determine the stylesheet to use - * @return the stylesheet name - */ - protected abstract String getStyleSheet(File model); - protected URIResolver getUriResolver(File model, ClassLoader cl) { URIResolver result = null; @@ -390,9 +333,9 @@ * @throws MojoExecutionException if any pb */ protected ClassLoader fixClassLoader() throws MojoExecutionException { + Set<String> urlsAsString = new HashSet<String>(); + List<URL> urls = new ArrayList<URL>(); try { - List<URL> urls = new ArrayList<URL>(); - Set<String> urlsAsString = new HashSet<String>(); ClassLoader loader = null; if (extraClassPathDirectory != null) { if (verbose) { @@ -423,10 +366,7 @@ addUrl(a.getFile().toURI().toURL(), urls, urlsAsString); } } - // using the strict class loader with only resolved artifacts - //loader = new URLClassLoader(urls.toArray(new URL[urls.size()])); } - //if (loader == null) { // we ask to add the directory in classloader loader = getClass().getClassLoader(); if (getLog().isDebugEnabled()) { @@ -438,7 +378,7 @@ for (URL u : ((URLClassLoader) loader).getURLs()) { addUrl(u, urls, urlsAsString); if (getLog().isDebugEnabled()) { - getLog().info("original cp entry: " + u); + getLog().debug("original cp entry: " + u); } } // et on force l'utilisation du classloader parent @@ -456,31 +396,13 @@ getLog().info("cp entry: " + u); } } - //} return loader; } catch (MalformedURLException e) { throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); } } - - /** - * Ajout dans la liste des urls et l'ensemble des urls sous forme de string, l'url - * donné. - * - * Note : l'utilisation de l'ensemble des urls sous forme de String est utile - * sinon la comparaison entre url requiere des appels reseaux et cela n'est - * pas acceptable dans notre cas (mode offline ne marcherait plus...). - * - * @param url l'url a rajouter dans la liste - * @param urls la liste des urls - * @param urlsAsString l'ensemble des urls sous forme de String - */ - protected void addUrl(URL url, List<URL> urls, Set<String> urlsAsString) { - String toString = url.toString(); - if (!urlsAsString.contains(toString)) { - urlsAsString.add(toString); - urls.add(url); - } - } } Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-08-23 17:04:57 UTC (rev 608) @@ -14,21 +14,15 @@ * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - package org.nuiton.eugene.plugin; +import java.io.IOException; +import org.nuiton.util.PluginIOContext; import java.io.File; -import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.apache.tools.ant.BuildLogger; -import org.apache.tools.ant.NoBannerLogger; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.Copy; -import org.apache.tools.ant.taskdefs.Expand; -import org.apache.tools.ant.types.FileSet; -import org.apache.tools.ant.types.PatternSet; +import org.nuiton.util.PluginHelper; /** * Extract zipped XMI files from zargo archive. @@ -41,114 +35,78 @@ * * @goal zargo2xmi */ -public class Zargo2Xmi extends AbstractMojo { +public class Zargo2Xmi extends EugeneAbstractMojo { + public static final String[] ZARGO_FILE_FILTER = new String[]{"**/*.zargo", "**/*.zuml"}; + public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; /** - * Répertoire source des fichier Zargo. + * Les entrées-sorties du plugin. + * + * <p/> * - * @parameter expression="${generator.srcDirZuml}" default-value="src/main/xmi" alias="srcDirUml" - * @since 0.50 + * En entrée on demande des répertoires où chercher les fichiers zargo a convertir. + * <p/> + * En sortie on demande le répertoire ou extraire les xmi et copier les resources. + * <p/> + * Par défaut on a les valeurs suivantes : + * </p> + * <code> + * in : src/main/xmi + * </p> + * out : target/generated-sources/xmi + * </code> + * </p> + * + * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : + * </p> + * <code> + * in : src/test/xmi + * </p> + * out : target/generated-sources/test-xmi + * </code> + * + * @parameter + * @since 1.0.0-rc-8 */ - protected File srcDirZuml; + protected PluginIOContext zargoResources; - /** - * Répertoire cible des fichiers extraits. - * - * @parameter alias="srcXmiDest" expression="${generator.destDirXmi}" default-value="target/generated-sources/xmi" - * @since 0.50 - */ - protected File destDirXmi; - - /** - * Ecrase les fichiers générés. - * - * @parameter expression="${generator.overwrite}" default-value="false" - * @since 0.50 - */ - protected boolean overwrite = false; - @Override public void execute() throws MojoExecutionException, MojoFailureException { - getLog().info("Extract zipped XMI files from zargo archive"); - getLog().info(" extracting from " + srcDirZuml + " to " + destDirXmi); + getLog().info("Extract zipped XMI files from zargo archive and copy resources"); + super.execute(); - actionZip(); - actionCopy(); - } + getLog().info("Extract zipped XMI files"); + try { + PluginHelper.expandFiles(zargoResources, ZARGO_FILE_FILTER, null, XMI_FILE_FILTER, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not expand files for reason " + ex.getMessage(), ex); + } - protected void actionZip() { + getLog().info("Copy resources"); + try { + PluginHelper.copyFiles(zargoResources, null, ZARGO_FILE_FILTER, overwrite); + } catch (IOException ex) { + throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex); + } - getLog().debug("Executing unzip action in **/*.zargo,**/*.zuml"); + } - /* Création d'un projet ant */ - Project project = createProject(); - - /* Création de la tâche */ - Expand zip = new Expand(); - zip.setProject(project); - zip.setTaskName("Extract"); - - /* Configuration */ - zip.setOverwrite(overwrite); - - /* Source */ - FileSet fileSet = new FileSet(); - fileSet.setProject(project); // resolve NullPointerException - fileSet.setDir(srcDirZuml); - fileSet.setIncludes("**/*.zargo,**/*.zuml"); - zip.addFileset(fileSet); - - /* Target */ - destDirXmi.mkdirs(); - zip.setDest(destDirXmi); - - PatternSet patternSet = new PatternSet(); - patternSet.setIncludes("*.xmi,**/*.xmi"); - zip.addPatternset(patternSet); - - /* Execution */ - zip.execute(); + @Override + protected PluginIOContext getResources() { + return zargoResources; } - protected void actionCopy() { + @Override + protected PluginIOContext initResources() { - getLog().debug("Executing copy from " + srcDirZuml + " to " + destDirXmi); - getLog().debug(" excluded resources : **/*.zargo,**/*.zuml"); + File defaultIn = getFile("src", "main", "xmi"); + File defaultOut = getFile("target", "generated-sources", "xmi"); - /* Création d'un projet ant */ - Project project = createProject(); + File defaultTestIn = getFile("src", "test", "xmi"); + File defaultTestOut = getFile("target", "generated-sources", "test-xmi"); - /* Création de la tâche ant Copy */ - Copy copy = new Copy(); - copy.setProject(project); - copy.setTaskName("Copy ressources"); + zargoResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut); - /* Configuration */ - copy.setTodir(destDirXmi); - copy.setOverwrite(overwrite); - - FileSet fileSet = new FileSet(); - fileSet.setDir(srcDirZuml); - fileSet.setExcludes("**/*.zargo,**/*.zuml"); - copy.addFileset(fileSet); - - /* Execution */ - copy.execute(); + return zargoResources; } - - protected Project createProject() { - /* Création d'un projet ant */ - Project project = new Project(); - - BuildLogger logger = new NoBannerLogger(); - logger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO); - logger.setOutputPrintStream(System.out); - logger.setErrorPrintStream(System.err); - - project.init(); - project.getBaseDir(); - project.addBuildListener(logger); - return project; - } - } Modified: trunk/maven-eugene-plugin/src/site/site.xml =================================================================== --- trunk/maven-eugene-plugin/src/site/site.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/maven-eugene-plugin/src/site/site.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -1,23 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <project name="${project.name}"> - <publishDate format="dd/MM/yyyy"/> - - <skin> - <groupId>org.nuiton</groupId> - <artifactId>maven-nuiton-skin</artifactId> - <version>1.0.0-alpha-1</version> - </skin> - <bannerLeft> <name>${project.name}</name> </bannerLeft> - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>${project.organization.url}</href> - </bannerRight> - <body> <links> <item name="Eugene" href="../eugene"/> @@ -42,11 +29,11 @@ </menu> <menu name="Téléchargement"> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" name="Librairie (jar)"/> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" name="Javadoc (jar)"/> - <item href="${repository.home.url}/org/nuiton/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" name="Sources (jar)"/> </menu> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/pom.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> + <modelVersion>4.0.0</modelVersion> <!-- ************************************************************* --> <!-- *** POM Relationships *************************************** --> @@ -9,7 +9,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom</artifactId> - <version>1.0.0-rc-5-SNAPSHOT</version> + <version>1.0.0</version> </parent> <artifactId>eugene</artifactId> @@ -27,7 +27,7 @@ <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> - <version>1.1.0-rc-9-SNAPSHOT</version> + <version>1.1.0</version> <scope>compile</scope> </dependency> @@ -106,6 +106,13 @@ </dependency> <dependency> + <groupId>org.nuiton</groupId> + <artifactId>maven-helper-plugin</artifactId> + <version>${helper.version}</version> + </dependency> + + <!-- TODO TC-20090823 remove ant deps --> + <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>${ant.version}</version> @@ -134,6 +141,12 @@ </dependency> <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + <version>1.5.15</version> + </dependency> + + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.6</version> @@ -161,6 +174,7 @@ <!-- pour un muli module on doit fixer le projectId --> <projectId>eugene</projectId> + <!-- TODO TC-20090823 remove ant deps --> <ant.version>1.7.1</ant.version> </properties> @@ -169,6 +183,23 @@ <defaultGoal>install</defaultGoal> + <pluginManagement> + <plugins> + + <plugin> + <artifactId>maven-site-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.nuiton.jrst</groupId> + <artifactId>doxia-module-jrst</artifactId> + <version>1.0.0</version> + </dependency> + </dependencies> + </plugin> + + </plugins> + </pluginManagement> + </build> <!-- ************************************************************* --> Modified: trunk/src/site/site.xml =================================================================== --- trunk/src/site/site.xml 2009-08-22 15:03:00 UTC (rev 607) +++ trunk/src/site/site.xml 2009-08-23 17:04:57 UTC (rev 608) @@ -1,24 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <project name="${project.name}"> - <publishDate format="dd/MM/yyyy"/> - - <skin> - <groupId>org.nuiton</groupId> - <artifactId>maven-nuiton-skin</artifactId> - <version>1.0.0</version> - </skin> - <bannerLeft> <name>${project.name}</name> <href>/</href> </bannerLeft> - <bannerRight> - <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src> - <href>${project.organization.url}</href> - </bannerRight> - <poweredBy> <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/> <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="${project.url}/images/jrst-logo.png"/> @@ -26,11 +13,7 @@ </poweredBy> <body> - <!--links> - <item name="[fr" href="${project.url}/index.html"/> - <item name="en]" href="${project.url}/en/index.html"/> - </links--> - + <breadcrumbs> <item name="${project.name}" href="${project.url}" /> </breadcrumbs>
participants (1)
-
tchemit@users.nuiton.org