Author: tchemit Date: 2008-01-12 19:29:50 +0000 (Sat, 12 Jan 2008) New Revision: 157 Modified: trunk/maven-jaxx-plugin/src/main/java/jaxx/JaxxGeneratorGoal.java Log: on doit permettre de diff?\195?\169rencer le r?\195?\169pertoire de g?\195?\169n?\195?\169ration du r?\195?\169pertoire de compilation Modified: trunk/maven-jaxx-plugin/src/main/java/jaxx/JaxxGeneratorGoal.java =================================================================== --- trunk/maven-jaxx-plugin/src/main/java/jaxx/JaxxGeneratorGoal.java 2008-01-12 19:29:09 UTC (rev 156) +++ trunk/maven-jaxx-plugin/src/main/java/jaxx/JaxxGeneratorGoal.java 2008-01-12 19:29:50 UTC (rev 157) @@ -21,6 +21,7 @@ import jaxx.compiler.CompilerOptions; import jaxx.compiler.JAXXCompiler; +import jaxx.compiler.JavaCCompiler; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; @@ -49,6 +50,11 @@ */ protected File out; /** + * @description R�pertoire de destination des fichiers � compiler. + * @parameter expression="${jaxx.classOut}" default-value="${basedir}/target/test-classes" + */ + protected File classOut; + /** * @description pour optimizer le code compil� ou g�n�r� ? * @parameter expression="${jaxx.optimize}" default-value="false" */ @@ -61,9 +67,9 @@ /** * @description les options de la compilation - * @parameter expression="${jaxx.javaOpts}" default-value="" + * @parameter expression="${jaxx.javaOpts}" */ - protected String javaOpts=""; + protected String javaOpts = null; /** * @description pour filter @@ -81,20 +87,23 @@ private static final String[] INCLUDES = {"**\\/*.jaxx"}; + private static final String[] INCLUDES_JAVA = {"**\\/*.java"}; + public void execute() throws MojoExecutionException, MojoFailureException { - // init(); - - DirectoryScanner ds = new DirectoryScanner(); + DirectoryScanner ds; + ds = new DirectoryScanner(); ds.setBasedir(getSrc()); - ds.setIncludes(includes==null|| includes.length==0?INCLUDES:includes); + boolean noIncludes = includes == null || includes.length == 0; + ds.setIncludes(noIncludes ? INCLUDES : includes); ds.scan(); files = ds.getIncludedFiles(); log.info("jaxx - found " + files.length + " file(s) to generate. "); CompilerOptions options = toCompilerOptions(); if (verbose) { log.debug("classPath: " + options.getClassPath()); - log.debug("out : " + options.getTargetDirectory()); + log.debug("javaOut : " + options.getTargetDirectory()); + log.debug("classOut : " + options.getJavacTargetDirectory()); log.debug("javacOpts: " + options.getJavacOpts()); log.debug("runJavac : " + options.getRunJavac()); log.debug("optiomize: " + options.getOptimize()); @@ -102,18 +111,48 @@ log.debug(file); } } + if (!JAXXCompiler.compile(src, files, options)) { throw new MojoFailureException("Aborting due to errors reported by jaxxc"); } + + if (options.getRunJavac()) { + // compile also non generated java sources + ds = new DirectoryScanner(); + ds.setBasedir(getSrc()); + if (noIncludes) { + ds.setIncludes(INCLUDES_JAVA); + } else { + String[] includesJava = new String[includes.length]; + for (int i = 0; i < includes.length; i++) { + String include = includes[i]; + if (include.endsWith(".jaxx")) { + includesJava[i] = include.substring(0, include.length() - "jaxx".length()) + "java"; + } else { + includesJava[i] = include; + } + } + ds.setIncludes(includesJava); + } + ds.scan(); + for (String file : ds.getIncludedFiles()) { + // compile + JavaCCompiler.runJavac(getClassOut().getPath(), options.getJavacOpts(), getSrc().getPath() + File.separator + file); + } + } + } public CompilerOptions toCompilerOptions() { CompilerOptions result = new CompilerOptions(); result.setClassPath(getSrc().getPath()); - result.setJavacOpts(getJavaOpts()); + if (getJavaOpts() != null && !"".equals(getJavaOpts())) { + result.setJavacOpts(getJavaOpts()); + } result.setKeepJavaFiles(true); result.setRunJavac(isRunJavac()); result.setOptimize(isOptimize()); + result.setJavacTargetDirectory(getClassOut()); result.setTargetDirectory(getOut()); return result; } @@ -136,6 +175,10 @@ return javaOpts; } + public File getClassOut() { + return classOut; + } + public boolean isRunJavac() { return runJavac; } @@ -156,6 +199,10 @@ this.out = out; } + public void setClassOut(File classOut) { + this.classOut = classOut; + } + public void setRunJavac(boolean runJavac) { this.runJavac = runJavac; }