Rebuilding WAR files in webapps directory
I think your first version looks pretty slick. You could use a let-binding to do a little reordering and naming.

import Data.Monoid

main = shellyFailDir $ verbosely $ do
  escaping False $ rm_rf $ webapps &lt;/&gt; "*"
  let sourceName = artifact &lt;&gt; "-" &lt;&gt; version &lt;&gt; ".war"
      source = m2repo &lt;/&gt; groupPath &lt;/&gt; artifact &lt;/&gt; version &lt;/&gt; sourceName
      destination = webapps &lt;/&gt; finalName &lt;&gt; ".war"
  cp source destination
  echo "done"