ALPHA - Not yet released
Note: currently only supports .clj files.
Note: no explicit windowa support.
Targets are invoked as the first argument to the mj command line
tool. For example, to invoke the clean target:
mj clean
Using Default Targets
makejack comes with several default targets/ To use these, you have to
import them into your mj.edn file.
#mj {:targets
#default-targets [:clean :pom :jar]}}
The targets are specified as a vector of keywords. To import all
available targets pass the :all keyword, instead of the vector.
Defining New Targets
Targets are defined in the :targets key of mj.edn. Let’s look at the
definition of the clean target, which is a default target in makejack.
#mj {…
:targets
{:clean {:doc #join ["Remove the " #ref [:target-path] " directory"]
:invoker :shell
:args ["rm" "-rf" #ref [:target-path]]
…}}
The :invoker key is mandatory, and defines the way makejack invokes the
build tool. Here we use the :shell invoker, which executes
the shell command specified in the :args key.
The :doc key provides a docstring that is used to describe the target.
The first line appears in the mj help output, and mj help clean
shows the full doc string.
Referring to values in mj.edn and project.edn
Notice the use of aero #ref tag above
to refer to other values in the mj.edn file.
The project.edn can also injected using the #project tag, should you
want to refernce values defined there. For example, you could define an
install target like this:
#mj {:project #project {:profile :jar}
:targets {:install {:doc "Install the API jar into the local repository."
:invoker :shell
:args ["mvn" "install-file"
#join ["-Dfile="
#ref [:target-path]
"/"
#ref [:project :jar-name]]
#join ["-DgroupId="
#ref [:project :group-id]]
#join ["-DartifactId="
#ref [:project :artifact-id]]
#join ["-Dversion="
#ref [:project :version]]
"-Dpackaging=jar"]}}}