(ns build (:refer-clojure :exclude [test]) (:require [clojure.tools.build.api :as b])) (def lib 'net.clojars.subgraph/burp-clj-montoya) (def version "0.1.0-SNAPSHOT") (def main 'burp-clj-montoya.burp-clj-montoya) (def class-dir "target/classes") (defn test "Run all the tests." [opts] (let [basis (b/create-basis {:aliases [:test]}) cmds (b/java-command {:basis basis :main 'clojure.main :main-args ["-m" "cognitect.test-runner"]}) {:keys [exit]} (b/process cmds)] (when-not (zero? exit) (throw (ex-info "Tests failed" {})))) opts) (defn- uber-opts [opts] (assoc opts :lib lib :main main :uber-file (format "target/%s-%s.jar" lib version) :basis (b/create-basis {}) :class-dir class-dir :src-dirs ["src"] :ns-compile [main])) (defn compile-java [_] (b/javac {:src-dirs ["java"] :class-dir class-dir :basis (b/create-basis {:project "deps.edn"})})) ;;:javac-opts ["-source" "8" "-target" "8"]})) (defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts] (test opts) (b/delete {:path "target"}) (compile-java nil) (let [opts (uber-opts opts)] (println "\nCopying source...") (b/copy-dir {:src-dirs ["resources" "src"] :target-dir class-dir}) (println (str "\nCompiling " main "...")) (b/compile-clj opts) (println "\nBuilding JAR...") (b/uber opts)) opts)