Boot-clj external process execution using Apache Commons Exec
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Clojars Project Dependencies Status Downloads Medium

Boot-clj external process execution using Apache Commons Exec

boot-exec is developed and maintained by Degree9

(Sub)Process Execution for boot-clj.

  • Provides exec task for process execution
  • Provides properties task for property/config file generation.

The following outlines basic usage of the task, extensive testing has not been done. Please submit issues and pull requests!


Add boot-exec to your build.boot dependencies and require the namespace:

(set-env! :dependencies '[[degree9/boot-exec "X.Y.Z" :scope "test"]])
(require '[degree9.boot-exec :refer :all])

Execute an external build tool:

boot exec -p bower -a "install"

Create a properties file:

boot properties -f bower.json -d <some path> -c <file contents> 

Use in a wrapper task:

(boot/deftask bower
  "boot-clj wrapper for bower"
  (let [...]
      (exec/properties :contents bwrjson :directory tmp-path :file "bower.json")
      (exec/properties :contents bwrrc :directory tmp-path :file ".bowerrc")
      (exec/exec :process "bower" :arguments ["install" "--allow-root"] :directory tmp-path :local "node_modules/bower/bin"))))

Task Options

The exec task exposes options for specifying where to look for an executable and where to execute once it is found.

p process     VAL     str      "Name of process to execute."
a arguments   VAL     [str]    "A list of arguments to pass to the executable."
k cache-key   VAL     kw       "Optional cache key for when exec is used for various filesets."
d directory   VAL     str      "Optional target directory to execute the process within."
g global      VAL     str      "Optional global path to search for the executable."
l local       VAL     str      "Optional local path to search for the executable."```

The :cache-key and directory options are mutually exclusive, the task first checks for a cache-key if found this is the location where the process will execute. If a directory is provided instead the directory location will be used for execution. If neither are provided the task will generate and use a temporary directory.