1.1 --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/AheadOfTime.java Mon May 26 17:52:56 2014 +0200
1.2 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/AheadOfTime.java Tue May 27 12:25:41 2014 +0200
1.3 @@ -18,25 +18,16 @@
1.4
1.5 package org.apidesign.bck2brwsr.mojo;
1.6
1.7 -import java.io.BufferedReader;
1.8 import java.io.File;
1.9 import java.io.FileWriter;
1.10 import java.io.IOException;
1.11 import java.io.InputStream;
1.12 -import java.io.InputStreamReader;
1.13 import java.net.MalformedURLException;
1.14 import java.net.URL;
1.15 import java.net.URLClassLoader;
1.16 import java.util.ArrayList;
1.17 import java.util.Collection;
1.18 -import java.util.Enumeration;
1.19 -import java.util.HashSet;
1.20 import java.util.List;
1.21 -import java.util.Set;
1.22 -import java.util.jar.JarEntry;
1.23 -import java.util.jar.JarFile;
1.24 -import java.util.logging.Level;
1.25 -import java.util.logging.Logger;
1.26 import org.apache.maven.artifact.Artifact;
1.27 import org.apache.maven.plugin.AbstractMojo;
1.28 import org.apache.maven.plugin.MojoExecutionException;
1.29 @@ -62,13 +53,22 @@
1.30 public class AheadOfTime extends AbstractMojo {
1.31 @Parameter(defaultValue = "${project}")
1.32 private MavenProject prj;
1.33 +
1.34 + @Parameter(defaultValue = "${project.build.directory}/${project.build.finalName}.jar")
1.35 + private File mainJar;
1.36
1.37 + @Parameter(defaultValue = "${project.build.directory}/${project.build.finalName}.js")
1.38 + private File mainJavaScript;
1.39 +
1.40 + @Parameter
1.41 + private String[] exports;
1.42 +
1.43 /**
1.44 * Directory where to generate ahead-of-time JavaScript files for
1.45 * required libraries.
1.46 */
1.47 - @Parameter(defaultValue = "${project.build.directory}/lib")
1.48 - private File aot;
1.49 + @Parameter(defaultValue = "lib")
1.50 + private String classPathPrefix;
1.51
1.52 /** Root JavaScript file to generate */
1.53 @Parameter(defaultValue="${project.build.directory}/bck2brwsr.js")
1.54 @@ -86,7 +86,7 @@
1.55 public void execute() throws MojoExecutionException, MojoFailureException {
1.56 URLClassLoader loader;
1.57 try {
1.58 - loader = buildClassLoader(null, prj.getArtifacts());
1.59 + loader = buildClassLoader(mainJar, prj.getArtifacts());
1.60 } catch (MalformedURLException ex) {
1.61 throw new MojoFailureException("Can't initialize classloader");
1.62 }
1.63 @@ -101,6 +101,7 @@
1.64 if ("provided".equals(a.getScope())) {
1.65 continue;
1.66 }
1.67 + File aot = new File(prj.getBuild().getDirectory(), classPathPrefix);
1.68 aot.mkdirs();
1.69 File js = new File(aot, n.substring(0, n.length() - 4) + ".js");
1.70 try {
1.71 @@ -109,6 +110,23 @@
1.72 throw new MojoFailureException("Can't compile" + a.getFile(), ex);
1.73 }
1.74 }
1.75 +
1.76 + try {
1.77 + Bck2Brwsr c = Bck2BrwsrJars.configureFrom(null, mainJar);
1.78 + if (exports != null) {
1.79 + for (String e : exports) {
1.80 + c = c.addExported(e.replace('.', '/'));
1.81 + }
1.82 + }
1.83 + FileWriter w = new FileWriter(mainJavaScript);
1.84 + c.
1.85 + obfuscation(obfuscation).
1.86 + resources(loader).
1.87 + generate(w);
1.88 + w.close();
1.89 + } catch (IOException ex) {
1.90 + throw new MojoFailureException("Cannot generate script for " + mainJar, ex);
1.91 + }
1.92
1.93 try {
1.94 FileWriter w = new FileWriter(vm);