a clj-based uberjarrer (forked from healthfinch/depstar and enhanced)
Install this tool to an alias in $PROJECT/deps.edn
or $HOME/.clojure/deps.edn
:
{
:aliases {:depstar
{:extra-deps
{seancorfield/depstar {:mvn/version "0.2.4"}}}}
}
Create an uberjar by invoking depstar
with the desired jar name:
clojure -A:depstar -m hf.depstar.uberjar MyProject.jar
Create a (library) jar by invoking depstar
with the desired jar name:
clojure -A:depstar -m hf.depstar.jar MyLib.jar
If you want to see all of the files that are being copied into the JAR file, add -v
or --verbose
after the JAR filename.
depstar
uses the classpath computed by clojure
.
For example, add web assets into an uberjar by including an alias in your deps.edn
:
{:paths ["src"]
:aliases {:webassets {:extra-paths ["public-html"]}}}
Then invoke depstar
with the chosen aliases:
clojure -A:depstar:webassets -m hf.depstar.uberjar MyProject.jar
If there is a pom.xml
file in the current directory, depstar
will attempt to read it and figure out the group ID, artifact ID, and version of the project. It will use that information to generate pom.properties
and MANIFEST.MF
in the JAR file, as well as copying that pom.xml
file into the JAR file. If you are building an uberjar, the manifest will declare clojure.main
as the Main-Class
(otherwise that property will be omitted).
You can suppress the consumption of the pom.xml
file with the -n
/ --no-pom
option.
Note that depstar
does no AOT compilation.
If you build an uberjar, you can run the resulting file as follows:
java -cp MyProject.jar clojure.main -m project.core
If you build an uberjar with a pom.xml
file present and do not specify -n
/ --no-pom
, so that a manifest is included, you can run the resulting file as follows:
java -jar MyProject.jar -m project.core
pom.xml
, if present, to generate a manifest (and copy pom.xml
into the JAR file).depstar
can be used to build JARs for older projects.-v
/--verbose
option to display files added to the archive; Fix #9 properly by creating parent directories prior to move of JAR file.*.pom
files; Fix #7 by excluding module-info.class
files; lists excluded files if debugging enabled.data_readers.clj
(do not close input stream!); supports -Ddepstar.debug=true
and DEPSTAR_DEBUG=true
to be more verbose.data_readers.clj
; hf.depstar.jar
namespace added.The use and distribution terms for this software are covered by the Eclipse Public License 2.0
Can you improve this documentation? These fine people already did:
Sean Corfield, Ghadi Shayban, Gert Goet & ⅅ₳ℕⅈⅇℒℒⅇ ҜⅇℱℱʘℝⅅEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close