healthfinch / depstar Goto Github PK
View Code? Open in Web Editor NEWA clj-based uberjarrer. See version maintained by Sean for up to date releases.
Home Page: https://github.com/seancorfield/depstar
A clj-based uberjarrer. See version maintained by Sean for up to date releases.
Home Page: https://github.com/seancorfield/depstar
See cursive-ide/gradle-clojure#8
The problem here is that the original timestamps from the source JARs are not preserved as files are copied so loaded .clj
files, such as pprint_base.clj
end up getting recompiled because they are seen to be newer than the .class
file that was generated from them.
Would you accept a PR for adding an option to extend the :merge-edn
clash strategy to other files? For example, adding a --merge-edn
option with a comma-separated list of resources. Duct relies on a file called duct_hierarchy.edn
that words similarly to data_readers.edn
and needs to be merged when compiled.
I get an invalid or corrupt file when trying to use this.
When attempting to include webassets in an uberjar, depstar is refusing to add:
clj -A:depstar:webassets -m hf.depstar.uberjar app.jar
Building uber jar: app.jar
Exception in thread "main" java.io.IOException: Is a directory
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.FileDispatcherImpl.read(FileDispatcherImpl.java:46)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:159)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109)
at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
at java.io.InputStream.read(InputStream.java:101)
at java.nio.file.Files.copy(Files.java:2908)
at java.nio.file.Files.copy(Files.java:3027)
at hf.depstar.uberjar$copy_BANG_.invokeStatic(uberjar.clj:117)
at hf.depstar.uberjar$copy_BANG_.invoke(uberjar.clj:110)
at hf.depstar.uberjar$copy_directory$reify__210$fn__211.invoke(uberjar.clj:185)
at hf.depstar.uberjar$copy_directory$reify__210.visitFile(uberjar.clj:184)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at hf.depstar.uberjar$copy_directory.invokeStatic(uberjar.clj:194)
at hf.depstar.uberjar$copy_directory.invoke(uberjar.clj:176)
at hf.depstar.uberjar$eval215$fn__216.invoke(uberjar.clj:201)
at clojure.lang.MultiFn.invoke(MultiFn.java:238)
at hf.depstar.uberjar$copy_source.invokeStatic(uberjar.clj:217)
at hf.depstar.uberjar$copy_source.invoke(uberjar.clj:215)
at hf.depstar.uberjar$run$fn__243$fn__244.invoke(uberjar.clj:312)
at clojure.core$run_BANG_$fn__8431.invoke(core.clj:7635)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:341)
at clojure.core$reduce.invokeStatic(core.clj:6747)
at clojure.core$run_BANG_.invokeStatic(core.clj:7630)
at clojure.core$run_BANG_.invoke(core.clj:7630)
at hf.depstar.uberjar$run$fn__243.invoke(uberjar.clj:312)
at hf.depstar.uberjar$run.invokeStatic(uberjar.clj:306)
at hf.depstar.uberjar$run.invoke(uberjar.clj:293)
at hf.depstar.uberjar$uber_main.invokeStatic(uberjar.clj:332)
at hf.depstar.uberjar$uber_main.invoke(uberjar.clj:325)
at hf.depstar.uberjar$_main.invokeStatic(uberjar.clj:336)
at hf.depstar.uberjar$_main.doInvoke(uberjar.clj:334)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)
My working tree contains a "resources" folder, which I've removed from :paths
at the top-level and added to a webassets
alias as per the depstar github README.
Removing the :webassts
alias from the command line produces app.jar
(without the resources
folder included, obviously!).
depstar included in deps.edn:
:depstar {:extra-deps {seancorfield/depstar {:mvn/version "RELEASE"}}}
Using the git alias as per the depstart github README:
Versions:
clojure 1.9
CLI tools: 1.10.1.469
Ubuntu Linux 18.04
zsh 5.4.2
I'm running the following
clj -A:depstar -m hf.depstar.uberjar myproject.jar
Which results in a Stream closed exception. It seems to be stumbling on data_readers.clj
from a dependency, but that's just a guess. Any idea?
{:warning "clashing jar item", :path "about.html"}
{:warning "clashing jar item", :path "deps.cljs"}
{:warning "clashing jar item", :path "deps.cljs"}
{:warning "clashing jar item", :path "javax/transaction/Transaction.class"}
{:warning "clashing jar item", :path "javax/transaction/HeuristicCommitException.class"}
{:warning "clashing jar item", :path "javax/transaction/RollbackException.class"}
{:warning "clashing jar item", :path "javax/transaction/InvalidTransactionException.class"}
{:warning "clashing jar item", :path "javax/transaction/UserTransaction.class"}
{:warning "clashing jar item", :path "javax/transaction/TransactionRequiredException.class"}
{:warning "clashing jar item", :path "javax/transaction/TransactionSynchronizationRegistry.class"}
{:warning "clashing jar item", :path "javax/transaction/NotSupportedException.class"}
{:warning "clashing jar item", :path "javax/transaction/HeuristicRollbackException.class"}
{:warning "clashing jar item", :path "javax/transaction/xa/XAException.class"}
{:warning "clashing jar item", :path "javax/transaction/xa/Xid.class"}
{:warning "clashing jar item", :path "javax/transaction/xa/XAResource.class"}
{:warning "clashing jar item", :path "javax/transaction/TransactionManager.class"}
{:warning "clashing jar item", :path "javax/transaction/Synchronization.class"}
{:warning "clashing jar item", :path "javax/transaction/SystemException.class"}
{:warning "clashing jar item", :path "javax/transaction/HeuristicMixedException.class"}
{:warning "clashing jar item", :path "javax/transaction/TransactionRolledbackException.class"}
{:warning "clashing jar item", :path "javax/transaction/Status.class"}
{:warning "clashing jar item", :path "META-INF/README"}
{:warning "clashing jar item", :path "META-INF/README"}
{:warning "clashing jar item", :path "data_readers.clj"}
Exception in thread "main" java.io.IOException: Stream closed
at java.base/java.util.zip.ZipInputStream.ensureOpen(ZipInputStream.java:68)
at java.base/java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:117)
at java.base/java.util.jar.JarInputStream.getNextEntry(JarInputStream.java:142)
at java.base/java.util.jar.JarInputStream.getNextJarEntry(JarInputStream.java:179)
at hf.depstar.uberjar$consume_jar.invokeStatic(uberjar.clj:90)
at hf.depstar.uberjar$consume_jar.invoke(uberjar.clj:83)
at hf.depstar.uberjar$eval195$fn__196.invoke(uberjar.clj:117)
at clojure.lang.MultiFn.invoke(MultiFn.java:238)
at hf.depstar.uberjar$copy_source.invokeStatic(uberjar.clj:157)
at hf.depstar.uberjar$copy_source.invoke(uberjar.clj:155)
at hf.depstar.uberjar$run$fn__225.invoke(uberjar.clj:193)
at clojure.core$run_BANG_$fn__8431.invoke(core.clj:7635)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:341)
at clojure.core$reduce.invokeStatic(core.clj:6747)
at clojure.core$run_BANG_.invokeStatic(core.clj:7630)
at clojure.core$run_BANG_.invoke(core.clj:7630)
at hf.depstar.uberjar$run.invokeStatic(uberjar.clj:193)
at hf.depstar.uberjar$run.invoke(uberjar.clj:189)
at hf.depstar.uberjar$_main.invokeStatic(uberjar.clj:199)
at hf.depstar.uberjar$_main.invoke(uberjar.clj:197)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.