From 09911f4aa932e23a7e72524f94035eb788353739 Mon Sep 17 00:00:00 2001 From: Matt Revelle Date: Sat, 19 Dec 2009 16:37:55 -0500 Subject: [PATCH] Added exclusions support in project files. Useful for libraries that have extra dependencies unnecessary for runtime. (Looking at you, log4j) --- src/leiningen/deps.clj | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/leiningen/deps.clj b/src/leiningen/deps.clj index 8e509922..cb589740 100644 --- a/src/leiningen/deps.clj +++ b/src/leiningen/deps.clj @@ -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.)