X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=maven-argeo-qooxdoo-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fmaven%2Fplugins%2Fqooxdoo%2FGenerateMojo.java;h=405d6c70e5560083946abf5c372351b898d80c6b;hb=09568df3148d8dd90643daf65b8c2dfcffe6a7ed;hp=1c4a4274dcf48ce563119f6257e4cc45e209da29;hpb=b580bf0bb40b95bf80c372c64ef7bca21294d6ee;p=gpl%2Fargeo-slc.git diff --git a/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java b/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java index 1c4a4274d..405d6c70e 100644 --- a/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java +++ b/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java @@ -5,7 +5,11 @@ import java.io.File; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; -import org.python.util.jython; +import org.apache.maven.plugin.logging.Log; +import org.codehaus.plexus.util.cli.CommandLineException; +import org.codehaus.plexus.util.cli.CommandLineUtils; +import org.codehaus.plexus.util.cli.Commandline; +import org.codehaus.plexus.util.cli.StreamConsumer; /** * Calls Qooxdoo python tool chain @@ -40,19 +44,46 @@ public class GenerateMojo extends AbstractMojo { public void execute() throws MojoExecutionException, MojoFailureException { try { - File jythonBase = new File(buildDirectory, "jython"); - jythonBase.mkdirs(); - System.setProperty("python.home", jythonBase.getCanonicalPath()); + // File jythonBase = new File(buildDirectory, "jython"); + // jythonBase.mkdirs(); + // System.setProperty("python.home", jythonBase.getCanonicalPath()); File generateScript = new File(baseDir, "generate.py"); // String[] jobArray = jobs.split(" "); // String[] args = new String[jobArray.length + 1]; // args[0] = generateScript.getCanonicalPath(); // System.arraycopy(jobArray, 0, args, 1, jobArray.length); - String[] args = { generateScript.getCanonicalPath(), job }; + String[] args = { "generate.py", job }; getLog().info("Running Qooxdoo job: " + job + " ..."); - jython.main(args); + // jython.main(args); + + Commandline cl = new Commandline(); + + if (File.separatorChar == '\\') {// win + File pythonBase = new File(buildDirectory, "python-win32") + .getCanonicalFile(); + cl.setExecutable(pythonBase.getPath() + File.separator + + "python"); + } else + cl.setExecutable("python"); + cl.setWorkingDirectory(baseDir.getCanonicalPath()); + cl.createArgument().setValue(generateScript.getCanonicalPath()); + cl.createArgument().setValue(job); + + StreamConsumer stdout = new StdoutConsumer(getLog()); + StreamConsumer stderr = new StderrConsumer(getLog()); + try { + int result = CommandLineUtils.executeCommandLine(cl, stdout, + stderr); + if (result != 0) { + throw new MojoExecutionException("Qooxdoo job returned: \'" + + result + "\'."); + } + } catch (CommandLineException e) { + throw new MojoExecutionException("Unable to run Qooxdoo job", e); + } getLog().info("Finished Qooxdoo job: " + job); + } catch (Exception e) { throw new MojoExecutionException( "Unexpected exception when running Jython", e); @@ -60,4 +91,61 @@ public class GenerateMojo extends AbstractMojo { } + /** + * Consumer to receive lines sent to stdout. The lines are logged as info. + */ + private class StdoutConsumer implements StreamConsumer { + /** Logger to receive the lines. */ + private Log logger; + + /** + * Constructor. + * + * @param log + * The logger to receive the lines + */ + public StdoutConsumer(Log log) { + logger = log; + } + + /** + * Consume a line. + * + * @param string + * The line to consume + */ + public void consumeLine(String string) { + logger.info(string); + } + } + + /** + * Consumer to receive lines sent to stderr. The lines are logged as + * warnings. + */ + private class StderrConsumer implements StreamConsumer { + /** Logger to receive the lines. */ + private Log logger; + + /** + * Constructor. + * + * @param log + * The logger to receive the lines + */ + public StderrConsumer(Log log) { + logger = log; + } + + /** + * Consume a line. + * + * @param string + * The line to consume + */ + public void consumeLine(String string) { + logger.warn(string); + } + } + }