Added exclusions support in project files. Useful for libraries that have extra dependencies unnecessary for runtime. (Looking at you, log4j)

This commit is contained in:
Matt Revelle 2009-12-19 16:37:55 -05:00 committed by Phil Hagelberg
parent 045e24d70e
commit 09911f4aa9

View file

@ -3,17 +3,25 @@
(:require [lancet])
(:use [leiningen.pom :only [default-repos]]
[clojure.contrib.java-utils :only [file]])
(:import [org.apache.maven.model Dependency]
(:import [org.apache.maven.model Dependency Exclusion]
[org.apache.maven.artifact.ant DependenciesTask RemoteRepository]
[org.apache.tools.ant.util FlatFileNameMapper]))
;; TODO: unify with pom.clj
(defn make-dependency [[dep version]]
(doto (Dependency.)
(.setGroupId (or (namespace dep) (name dep)))
(.setArtifactId (name dep))
(.setVersion version)))
(defn make-exclusion [excl]
(doto (Exclusion.)
(.setGroupId (or (namespace excl) (name excl)))
(.setArtifactId (name excl))))
(defn make-dependency [[dep version & exclusions]]
(let [es (map make-exclusion (when (= (first exclusions) :exclusions)
(second exclusions)))]
(doto (Dependency.)
(.setGroupId (or (namespace dep) (name dep)))
(.setArtifactId (name dep))
(.setVersion version)
(.setExclusions es))))
(defn make-repository [[id url]]
(doto (RemoteRepository.)