Skip to content

Commit e6ed178

Browse files
gavinkflamtonsky
authored andcommitted
Support --multi-release option to create JAR manifest
1 parent 416528b commit e6ed178

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ Supported command-line options are:
196196
--aliases <alias:alias:...> Colon-separated list of alias names to include from deps file. Defaults to nothing
197197
--target <file> Jar file to ouput to. Defaults to 'target/<directory-name>.jar'
198198
--main-class <ns> Main class, if it exists (e.g. app.core)
199+
--multi-release (true|false) Add a multi-release flag to the manifest. Defaults to false.
199200
--level (debug|info|warn|error) Verbose level. Defaults to debug
200201
```
201202

src/uberdeps/api.clj

+11-5
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,18 @@
111111

112112
(defn package-manifest
113113
[opts out]
114-
(when-some [main-class (:main-class opts)]
115-
(let [manifest (str "Manifest-Version: 1.0\n"
116-
(format "Created-By: %s (%s)\n" (System/getProperty "java.version") (System/getProperty "java.vm.vendor"))
114+
(let [manifest (str "Manifest-Version: 1.0\n"
115+
(format "Created-By: %s (%s)\n"
116+
(System/getProperty "java.version")
117+
(System/getProperty "java.vm.vendor"))
118+
(if-let [main-class (:main-class opts)]
117119
(format "Main-Class: %s\n" main-class))
118-
in (io/input-stream (.getBytes manifest))]
119-
(copy-stream in "META-INF/MANIFEST.MF" (FileTime/from (Instant/now)) out))))
120+
; Indicate that we are generating a multi-release JAR.
121+
; https://openjdk.java.net/jeps/238
122+
(if-let [multi-release (:multi-release opts)]
123+
(format "Multi-Release: true\n")))
124+
in (io/input-stream (.getBytes manifest))]
125+
(copy-stream in "META-INF/MANIFEST.MF" (FileTime/from (Instant/now)) out)))
120126

121127

122128
(defn package-libs [deps-map out]

src/uberdeps/uberjar.clj

+3-2
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
(->> (remove str/blank?)
2121
(map keyword)
2222
(into #{})))
23-
main-class (get args "--main-class")
23+
main-attrs {:main-class (get args "--main-class")
24+
:multi-release (= (get args "--multi-release") "true")}
2425
level (keyword (or (get args "--level") "debug"))]
2526
(binding [api/level level]
2627
(deps.dir/with-dir deps-dir
2728
(api/package
2829
(edn/read-string (slurp deps-file))
2930
target
30-
{:aliases aliases :main-class main-class})))
31+
(assoc main-attrs :aliases aliases))))
3132
(shutdown-agents)))

0 commit comments

Comments
 (0)