/* (non-Javadoc) * @see de.enough.polish.jar.Packager#doPackage(java.io.File, java.io.File, de.enough.polish.Device, de.enough.polish.preprocess.BooleanEvaluator, java.util.Map, org.apache.tools.ant.Project) */ public void createPackage( File sourceDir, File targetFile, Device device, Locale locale, Environment env) throws IOException, BuildException { PackageSetting setting = getSetting(); env.addVariable("polish.packageDir", sourceDir.getAbsolutePath()); String executable = env.writeProperties(setting.getExecutable()); String argumentsStr = env.writeProperties(setting.getArguments()); String[] arguments = StringUtil.splitAndTrim(argumentsStr, ";;"); String[] parameters = new String[arguments.length + 1]; parameters[0] = executable; System.arraycopy(arguments, 0, parameters, 1, arguments.length); Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(parameters); try { String info = executable; if (info.indexOf(File.separatorChar) != -1) { info = info.substring(info.indexOf(File.separatorChar)); } info += ": "; LoggerThread.log(process, info); int result = process.waitFor(); if (result != 0) { System.err.println("Call to external packager was: "); for (int i = 0; i < parameters.length; i++) { System.err.print(parameters[i] + " "); } System.err.println(); throw new BuildException("External packager failed with result [" + result + "]."); } } catch (InterruptedException e) { e.printStackTrace(); throw new BuildException("External packager was interrupted."); } }