Allow custom :repositories to be specified in project.clj.

Add build.clojure.org as a default repo.
This commit is contained in:
Phil Hagelberg 2009-11-14 15:31:42 -08:00
parent fc931d8747
commit 12f0b98abc
2 changed files with 16 additions and 6 deletions

View file

@ -2,9 +2,17 @@
(:require [lancet])
(:use [clojure.contrib.java-utils :only [file]])
(:import [org.apache.maven.model Dependency]
[org.apache.maven.artifact.ant DependenciesTask]
[org.apache.maven.artifact.ant DependenciesTask RemoteRepository]
[org.apache.tools.ant.util FlatFileNameMapper]))
(defn make-repository [[id url]]
(doto (RemoteRepository.)
(.setId id)
(.setUrl url)))
(def default-repos {"central" "http://repo1.maven.org/maven/"
"clojure-snapshots" "http://build.clojure.org/snapshots"})
(defn- make-dependency [[dep version]]
(doto (Dependency.)
(.setGroupId (or (namespace dep) (name dep)))
@ -12,7 +20,6 @@
(.setVersion version)))
;; TODO: development dependencies
;; TODO: add build.clojure.org as a default repo
(defn deps
"Install dependencies in lib/"
[project & args]
@ -21,6 +28,9 @@
(.setFilesetId deps-task "dependency.fileset")
(.setProject deps-task lancet/ant-project)
(.setPathId deps-task (:name project))
(doseq [r (map make-repository (concat default-repos
(:repositories project)))]
(.addConfiguredRemoteRepository deps-task r))
(doseq [dep (:dependencies project)]
(.addDependency deps-task (make-dependency dep)))
(.execute deps-task)

View file

@ -10,7 +10,7 @@
(deftest test-deps
(delete-file-recursively (file (:root test-project) "lib") true)
(deps test-project)
(is (subset? #{"jdom-1.0.jar" "tagsoup-1.2.jar"
"clojure-1.1.0-alpha-SNAPSHOT.jar" "rome-0.9.jar"}
(set (map #(.getName %)
(.listFiles (file (:root test-project) "lib")))))))
(let [jars (set (map #(.getName %)
(.listFiles (file (:root test-project) "lib"))))]
(is (some #(re-find #"clojure-1.1.0-alpha" %) jars))
(is (subset? #{"jdom-1.0.jar" "tagsoup-1.2.jar" "rome-0.9.jar"} jars))))