# HG changeset patch # User Jaroslav Tulach # Date 1367222025 -7200 # Node ID f44a970bbc2fae802e492a6313edc67c418b5939 # Parent 546cdcaf3e665aeb1455b25d0ff328aa95eb9308 Generates an fxbrwsr.zip that can be launched as a standalone application diff -r 546cdcaf3e66 -r f44a970bbc2f javaquery/demo-twitter/pom.xml --- a/javaquery/demo-twitter/pom.xml Mon Apr 29 08:37:23 2013 +0200 +++ b/javaquery/demo-twitter/pom.xml Mon Apr 29 09:53:45 2013 +0200 @@ -45,6 +45,7 @@ UTF-8 MINIMAL + org/apidesign/bck2brwsr/demo/twitter/index.html @@ -60,7 +61,7 @@ - org/apidesign/bck2brwsr/demo/twitter/index.html + ${brwsr.startpage} ${brwsr} @@ -136,6 +137,45 @@ fxbrwsr + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + org.apidesign.bck2brwsr.launcher.FXBrwsrLauncher + true + lib/ + + + ${brwsr.startpage} + + + + + + maven-assembly-plugin + 2.4 + + + distro-assembly + package + + single + + + + src/main/assembly/fxbrwsr.xml + + + + + + + org.apidesign.html @@ -146,7 +186,7 @@ ${project.groupId} launcher.fx ${project.version} - test + runtime diff -r 546cdcaf3e66 -r f44a970bbc2f javaquery/demo-twitter/src/main/assembly/fxbrwsr.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaquery/demo-twitter/src/main/assembly/fxbrwsr.xml Mon Apr 29 09:53:45 2013 +0200 @@ -0,0 +1,42 @@ + + + + + fxbrwsr + + zip + + ${project.build.finalName}-fxbrwsr + + + false + runtime + lib + + + + + ${project.build.directory}/${project.build.finalName}.jar + / + + + \ No newline at end of file diff -r 546cdcaf3e66 -r f44a970bbc2f launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java Mon Apr 29 08:37:23 2013 +0200 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/FXBrwsrLauncher.java Mon Apr 29 09:53:45 2013 +0200 @@ -19,12 +19,15 @@ import org.apidesign.bck2brwsr.launcher.fximpl.FXBrwsr; import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Method; import java.net.URI; import java.net.URL; import java.net.URLClassLoader; +import java.util.Enumeration; import java.util.concurrent.Executors; +import java.util.jar.Manifest; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Platform; @@ -47,7 +50,7 @@ throw new LinkageError("Can't add jfxrt.jar on the classpath", ex); } } - + public FXBrwsrLauncher(String ignore) { super(null); } @@ -94,5 +97,33 @@ super.close(); Platform.exit(); } + + public static void main(String... args) throws IOException { + String startPage = null; + + final ClassLoader cl = FXBrwsrLauncher.class.getClassLoader(); + startPage = findStartPage(cl, startPage); + if (startPage == null) { + throw new NullPointerException("Can't find StartPage tag in manifests!"); + } + + Launcher.showURL("fxbrwsr", cl, startPage); + } + private static String findStartPage(final ClassLoader cl, String startPage) throws IOException { + Enumeration en = cl.getResources("META-INF/MANIFEST.MF"); + while (en.hasMoreElements()) { + URL url = en.nextElement(); + Manifest mf; + try (InputStream is = url.openStream()) { + mf = new Manifest(is); + } + String sp = mf.getMainAttributes().getValue("StartPage"); + if (sp != null) { + startPage = sp; + break; + } + } + return startPage; + } }