X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=maven%2Fmaven-argeo-qooxdoo-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fmaven%2Fplugins%2Fqooxdoo%2FGenerateMojo.java;fp=maven%2Fmaven-argeo-qooxdoo-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fmaven%2Fplugins%2Fqooxdoo%2FGenerateMojo.java;h=ec695a56b21301ccf08b877f71f98882a0d33fe6;hb=e990c0e8f9ca2cdbffe3659c1ee2d70a862da190;hp=5a3429523ffe436b03bacd3b1c48c0b374590235;hpb=7db56a4968ba80db1990c44a5041461f0662e9a7;p=gpl%2Fargeo-slc.git diff --git a/maven/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java b/maven/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java index 5a3429523..ec695a56b 100644 --- a/maven/maven-argeo-qooxdoo-plugin/src/main/java/org/argeo/slc/maven/plugins/qooxdoo/GenerateMojo.java +++ b/maven/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,39 @@ 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"); + 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 = { "generate.py", job }; getLog().info("Running Qooxdoo job: " + job + " ..."); - jython.main(args); + // jython.main(args); + + Commandline cl = new Commandline(); + 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 +84,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); + } + } + }