Author: tchemit Date: 2008-12-23 10:31:56 +0000 (Tue, 23 Dec 2008) New Revision: 1090 Modified: lutinjaxx/trunk/maven-jaxx-plugin/changelog.txt lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java Log: add addProjectClassPath property to add project compile class-path in plugin class-path Modified: lutinjaxx/trunk/maven-jaxx-plugin/changelog.txt =================================================================== --- lutinjaxx/trunk/maven-jaxx-plugin/changelog.txt 2008-12-18 10:05:15 UTC (rev 1089) +++ lutinjaxx/trunk/maven-jaxx-plugin/changelog.txt 2008-12-23 10:31:56 UTC (rev 1090) @@ -1,4 +1,5 @@ 0.8 chemit 200812?? + * 20081219 [chemit] - add addProjectClassPath property to add project compile class-path in plugin class-path * 20081214 [chemit] - add addSourcesToClassPath property to add sources directories in class-path 0.7 chemit 20081210 Modified: lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java =================================================================== --- lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java 2008-12-18 10:05:15 UTC (rev 1089) +++ lutinjaxx/trunk/maven-jaxx-plugin/src/main/java/org/codelutin/jaxx/JaxxGeneratorMojo.java 2008-12-23 10:31:56 UTC (rev 1090) @@ -24,6 +24,7 @@ import jaxx.runtime.JAXXContext; import jaxx.tags.TagManager; import jaxx.tags.swing.SwingInitializer; +import org.apache.maven.artifact.DependencyResolutionRequiredException; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -76,6 +77,15 @@ protected boolean addSourcesToClassPath; /** + * flag to include in compiler classpath the project compile classpath. + * <p/> + * By default, false. + * + * @parameter expression="${jaxx.addProjectClassPath}" default-value="false" + */ + protected boolean addProjectClassPath; + + /** * chemin du repertoire de generation des resources. * * @parameter expression="${jaxx.outResource}" default-value="${basedir}/target/generated-sources/resources" @@ -253,7 +263,7 @@ fixCompileSourceRoots(); - if (addSourcesToClassPath) { + if (addSourcesToClassPath || addProjectClassPath) { cl = initClassLoader(project, getLog()); Thread.currentThread().setContextClassLoader(cl); } @@ -323,7 +333,7 @@ result.setJaxxContextImplementorClass(jaxxContextImplementorClass); result.setExtraImports(extraImports); result.setDefaultErrorUI(defaultErrorUIClass); - if (cl!=null) { + if (cl != null) { result.setClassLoader(cl); } @@ -395,7 +405,7 @@ URLClassLoader result; try { - + List<URL> lUrls = new ArrayList<URL>(); List<String> sources = project.getCompileSourceRoots(); @@ -404,14 +414,28 @@ lUrls.add(new File(source).toURI().toURL()); } } - lUrls.add(outClass.toURI().toURL()); + if (addProjectClassPath) { + getLog().info("use project compile scope class-path"); + // add also all dependency of the project in compile scope + for (Object o : project.getCompileClasspathElements()) { + String url = (String) o; + File f = new File(url); + if (!f.exists()) { + continue; + } + lUrls.add(f.toURI().toURL()); + } + } + result = new URLClassLoader(lUrls.toArray(new URL[lUrls.size()]), getClass().getClassLoader()); } catch (MalformedURLException eee) { throw new RuntimeException("Can't create ClassLoader for script, bad directory: " + outClass + " for reason " + eee.getMessage(), eee); } catch (IOException e) { throw new RuntimeException("Can't create ClassLoader for script, bad directory: " + outClass + " for reason " + e.getMessage(), e); + } catch (DependencyResolutionRequiredException e) { + throw new RuntimeException(e); } loader = result; }