Fork me on GitHub
#tools-build
<
2022-06-27
>
Drew Verlee01:06:01

if i was translating a boot build to a tools one, then the equivelent of boot's https://github.com/boot-clj/boot/blob/master/doc/boot.task.built-in.md#aot would be tools build's https://clojure.github.io/tools.build/clojure.tools.build.api.html#var-compile-clj right?

compile-clj: Compile Clojure source to classes in :class-dir.

aot: Perform AOT compilation of Clojure namespaces.
the compiled clojure source to classes that compile-clj produces are aot complied right. That's what the process means as far as i understand: > Ahead-Of-Time (AOT) compilation allows the compilation of Java™ classes into native code for subsequent executions of the same program

Drew Verlee18:06:44

why does clojure.tools.build.api/write-pom "skip" :src-dir value that points to cljc files? that's how i understand this message that's produced when i run the build e.g clj -T:build uber

Skipping paths: src/cljc

seancorfield18:06:18

write-pom takes the first path it finds in the basis and treats it as the source directory in pom.xml and it ignores the second and subsequent paths -- that's what that message is saying.

seancorfield18:06:27

(mostly it's to ensure you don't have ["resources" "src"] as your :paths as I recall)

Drew Verlee18:06:16

another question, unrelated to the one above. the logic for the build (what the guide puts in build.clj) isn't on the src path for the projects deps file. Is there a way to send those expressions to a clojure repl so you can do RDD? Maybe it's just a matter of having an alias like "build-dev" and then putting the build logic on a path :extra-paths ["builds"] with builds/build...

borkdude18:06:28

@drewverlee You can do :extra-paths ["."] and launch a repl with the :build alias

👍 1
Drew Verlee18:06:45

another another question 🙂 The final step/function of my uberjar build fails uber. I expected to see a <file>.jar on the provided classpath class-directory but there is nothing. There isn't any warnings or errors that i see. I'll post here if i find anything interesting as i try to figure out how to produce the jar correctly.

seancorfield18:06:21

It's generally going to be in the target folder unless you've told it somewhere else.

seancorfield18:06:42

Not sure what you mean by "provided classpath".

Drew Verlee18:06:09

i meant to say :class-dir /class-directory

seancorfield18:06:32

What are you specifying for :uber-file in your uber call?

Drew Verlee18:06:11

"centriq-web.jar"

seancorfield18:06:12

Per the guide:

(def class-dir "target/classes")
(def basis (b/create-basis {:project "deps.edn"}))
(def uber-file (format "target/%s-%s-standalone.jar" (name lib) version))
The uberjar will be written to the target folder, not target/classes.

seancorfield18:06:46

OK, so with just that :uber-file, you should see it in the root of your project (where you run clojure from).

Drew Verlee18:06:52

correct, that's where it is. ugh

Drew Verlee18:06:16

thanks! I should have looked harder, i guess i was just expecting a weirder problem!