[Lutingenerator-commits] r418 - in maven-generator-plugin/trunk: . src/main/java/org/codelutin/generator/plugin
Author: tchemit Date: 2009-02-09 19:19:05 +0000 (Mon, 09 Feb 2009) New Revision: 418 Modified: maven-generator-plugin/trunk/changelog.txt maven-generator-plugin/trunk/pom.xml maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java Log: fix bug when using sibling dependencies in a multi-module project Modified: maven-generator-plugin/trunk/changelog.txt =================================================================== --- maven-generator-plugin/trunk/changelog.txt 2009-02-09 08:34:42 UTC (rev 417) +++ maven-generator-plugin/trunk/changelog.txt 2009-02-09 19:19:05 UTC (rev 418) @@ -1,6 +1,7 @@ 0.64 ?? 200812?? + * 20090209 [chemit] - fix bug when using sibling dependencies in a multi-module project * 20090129 [chemit] - use lutinproject 3.4 (suppress javadoc plugin invocation) - + 0.63 chemit 20081215 * 20081215 [chemit] follow lutingenerator release Modified: maven-generator-plugin/trunk/pom.xml =================================================================== --- maven-generator-plugin/trunk/pom.xml 2009-02-09 08:34:42 UTC (rev 417) +++ maven-generator-plugin/trunk/pom.xml 2009-02-09 19:19:05 UTC (rev 418) @@ -1,5 +1,6 @@ <?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/maven-v4_0_0.xsd"> +<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -62,13 +63,45 @@ <!-- todo pour la montee de version voir la doc --> <lutingenerator.version>${project.version}</lutingenerator.version> - + </properties> <build> <defaultGoal>install</defaultGoal> + <plugins> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-maven-plugin</artifactId> + <version>1.3.8</version> + <executions> + <execution> + <goals> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <artifactId>maven-plugin-plugin</artifactId> + <version>2.4.3</version> + <configuration> + <requirements> + + </requirements> + </configuration> + <executions> + <execution> + <goals> + <goal>addPluginArtifactMetadata</goal> + </goals> + + </execution> + </executions> + </plugin> + </plugins> </build> @@ -82,5 +115,5 @@ <developerConnection>${maven.scm.developerConnection}</developerConnection> <url>${maven.scm.url}</url> </scm> - + </project> Modified: maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java =================================================================== --- maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-09 08:34:42 UTC (rev 417) +++ maven-generator-plugin/trunk/src/main/java/org/codelutin/generator/plugin/GeneratorPlugin.java 2009-02-09 19:19:05 UTC (rev 418) @@ -43,14 +43,17 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map.Entry; /** * Effectue toutes les générations et copie les fichiers générés * dans le répertoire de compilation * * @goal generate + * @projectRequired true */ public class GeneratorPlugin extends AbstractMojo { @@ -64,7 +67,7 @@ /** * Répertoire source * - * @parameter alias="srcGenDest" + * @parameter expression="${generator.srcGenDest}" alias="srcGenDest" * @required */ protected File srcDirGen; @@ -72,7 +75,7 @@ /** * Répertoire cible * - * @parameter + * @parameter expression="${generator.destDirGen}" * @required */ protected File destDirGen; @@ -80,7 +83,7 @@ /** * Templates à utiliser, séparés par des virgules * - * @parameter + * @parameter expression="${generator.templates}" * @required */ protected String templates; @@ -88,14 +91,14 @@ /** * Templates à ne pas utiliser * - * @parameter + * @parameter expression="${generator.excludeTemplates}" */ - protected List<String> excludeTemplates; + protected String[] excludeTemplates; /** * Fichier à inclure * - * @parameter + * @parameter expression="${generator.includes}" * @required */ protected String includes; @@ -110,7 +113,7 @@ /** * Ecrase les fichiers générés * - * @parameter default-value="false" + * @parameter expression="${generator.overwrite}" default-value="false" */ private boolean overwrite = false; @@ -155,7 +158,7 @@ generator.setTemplates(templates); generator.setSrcdir(srcDirGen); generator.setEncoding(encoding); - + destDirGen.mkdirs(); generator.setDestdir(destDirGen); @@ -164,12 +167,10 @@ generator.setProperties("defaultPackage=" + defaultPackage); generator.setIncludes(includes); - generator.setExcludeTemplates(excludeTemplates == null ? java.util.Collections.<String>emptyList() : excludeTemplates); + generator.setExcludeTemplates(excludeTemplates == null || excludeTemplates.length == 0 ? java.util.Collections.<String>emptyList() : java.util.Arrays.asList(excludeTemplates)); - if (extraClassPathDirectory != null) { - getLog().info("will add the cp to classloader " + extraClassPathDirectory); - generator.setLoader(fixClassLoader(extraClassPathDirectory)); - } + ClassLoader loader = fixClassLoader(); + generator.setLoader(loader); /* Execution */ generator.execute(); } @@ -189,18 +190,43 @@ getLog().info("add resource root :" + resources); project.addResource(resources); } - - } - protected ClassLoader fixClassLoader(File dirToAdd) throws MojoExecutionException { + /** + * Prepare le classLoader a utiliser dans le generateur. + * <p/> + * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté. + * <p/> + * Si des références à des sibling modules, ils seront rajoutés aussi. + * + * @return le class loader modifie + * @throws MojoExecutionException if any pb + */ + protected ClassLoader fixClassLoader() throws MojoExecutionException { try { + List<URL> urls = new ArrayList<URL>(); + if (extraClassPathDirectory != null) { + getLog().info("add extra directory in generator's classLoader : '" + extraClassPathDirectory + "'"); + urls.add(extraClassPathDirectory.toURI().toURL()); + } + if (project.getProjectReferences() != null) { + for (Object o : project.getProjectReferences().entrySet()) { + Entry entry = (Entry) o; + MavenProject relatedProject = (MavenProject) entry.getValue(); + 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()); + } + } // we ask to add the directory in classloader - return new URLClassLoader(new URL[]{dirToAdd.toURI().toURL()}, getClass().getClassLoader()); + 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()); } - } }
participants (1)
-
tchemit@users.labs.libre-entreprise.org