From 59e8a250d825f8d310bd783b8c6165769fa0d9ba Mon Sep 17 00:00:00 2001 From: Matias Bjarland Date: Mon, 15 Jan 2018 14:42:18 +0100 Subject: [PATCH] adding jar offset rewriting and support for custom preamble scripts --- project.clj | 5 +++-- src/leiningen/bin.clj | 29 +++++++++++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/project.clj b/project.clj index 1cf9451..f714dc6 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject lein-binplus "0.6.3" +(defproject lein-binplus "0.6.4" :description "A leiningen plugin for generating standalone console executables for your project." :url "https://github.com/BrunoBonacci/lein-binplus" @@ -10,7 +10,8 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[me.raynes/fs "1.4.6"] - [de.ubercode.clostache/clostache "1.4.0"]] + [de.ubercode.clostache/clostache "1.4.0"] + [clj-zip-meta/clj-zip-meta "0.1.2" :exclusions [org.clojure/clojure]]] :eval-in-leiningen true :deploy-repositories [["releases" :clojars] diff --git a/src/leiningen/bin.clj b/src/leiningen/bin.clj index 6d7e5ea..9cdd024 100644 --- a/src/leiningen/bin.clj +++ b/src/leiningen/bin.clj @@ -4,7 +4,8 @@ [clostache.parser :refer [render]] [leiningen.uberjar :refer [uberjar]] [me.raynes.fs :as fs] - [clojure.string :as str])) + [clojure.string :as str] + [clj-zip-meta.core :refer [repair-zip-with-preamble-bytes]])) @@ -32,11 +33,12 @@ (defn preamble-template - [{:keys [bootclasspath custom-preamble] :as options}] + [{:keys [bootclasspath custom-preamble custom-preamble-script]}] (cond + custom-preamble-script (slurp custom-preamble-script) custom-preamble (str custom-preamble "\r\n") - bootclasspath BOOTCLASSPATH-TEMPLATE - :else NORMAL-TEMPLATE)) + bootclasspath BOOTCLASSPATH-TEMPLATE + :else NORMAL-TEMPLATE)) (defn render-preamble @@ -59,14 +61,15 @@ (defn options [project] - {:project-name (:name project) - :version (:version project) - - :main (:main project) - :bootclasspath (get-in project [:bin :bootclasspath] false) - :jvm-opts (jvm-opts project) - :win-jvm-opts (sanitize-jvm-opts-for-win (jvm-opts project)) - :custom-preamble (get-in project [:bin :custom-preamble]) + {:project-name (:name project) + :version (:version project) + + :main (:main project) + :bootclasspath (get-in project [:bin :bootclasspath] false) + :jvm-opts (jvm-opts project) + :win-jvm-opts (sanitize-jvm-opts-for-win (jvm-opts project)) + :custom-preamble (get-in project [:bin :custom-preamble]) + :custom-preamble-script (get-in project [:bin :custom-preamble-script]) }) @@ -119,4 +122,6 @@ (str (:name project) "-" (:version project)))) uberjar (uberjar project)] (writing-bin binfile uberjar (preamble opts)) + (println "Re-aligning zip offsets") + (repair-zip-with-preamble-bytes binfile) (copy-bin project binfile))))