Support :local-repo-classpath.
TODO: ant still spews out a bunch of useless output; doesn't seem to be a way to suppress the noise.
This commit is contained in:
parent
399e8b69c2
commit
eaf0de1fe9
4 changed files with 38 additions and 14 deletions
|
@ -136,6 +136,8 @@
|
|||
:extra-classpath-dirs ["script"] ; more classpath entries not included in jar
|
||||
:jar-name "sample.jar" ; name of the jar produced by 'lein jar'
|
||||
:uberjar-name "sample-standalone.jar" ; as above for uberjar
|
||||
;; Construct classpath from jars in ~/.m2 rather than copying to :library-path
|
||||
:local-repo-classpath true
|
||||
;; Options to pass to java compiler for java source
|
||||
;; See http://ant.apache.org/manual/Tasks/javac.html
|
||||
:javac-options {:destdir "classes/"}
|
||||
|
|
|
@ -1,15 +1,35 @@
|
|||
(ns leiningen.classpath
|
||||
"Print the classpath of the current project."
|
||||
(:use [leiningen.core :only [read-project home-dir]]
|
||||
[leiningen.deps :only [do-deps]]
|
||||
[clojure.java.io :only [file]]
|
||||
[clojure.string :only [join]])
|
||||
(:require [lancet.core :as lancet]
|
||||
[clojure.string :as string])
|
||||
(:import (org.apache.tools.ant.types Path)))
|
||||
|
||||
(defn ^:internal find-lib-jars
|
||||
(defn ^{:internal true} fileset-paths [fileset]
|
||||
(-> fileset
|
||||
(.getDirectoryScanner lancet/ant-project)
|
||||
(.getIncludedFiles)))
|
||||
|
||||
(defn- find-lib-jars [project]
|
||||
(.listFiles (file (:library-path project))))
|
||||
|
||||
(defn- find-local-repo-jars [project]
|
||||
;; TODO: Shut up, ant. You are useless. Nobody cares about what you say.
|
||||
;; Removing ant-project loggers and redirecting their output streams
|
||||
;; does nothing. How to suppress output?
|
||||
(for [path (fileset-paths (do-deps project :dependencies))]
|
||||
(file (System/getProperty "user.home") ".m2" "repository" path)))
|
||||
|
||||
(defn ^:internal find-jars
|
||||
"Returns a seq of Files for all the jars in the project's library directory."
|
||||
[project]
|
||||
(filter #(.endsWith (.getName %) ".jar")
|
||||
(concat (.listFiles (file (:library-path project)))
|
||||
(concat (if (:local-repo-classpath project)
|
||||
(find-local-repo-jars project)
|
||||
(find-lib-jars project))
|
||||
;; This must be hard-coded because it's used in
|
||||
;; bin/lein and thus can't be changed in project.clj.
|
||||
(.listFiles (file (:root project) "lib/dev")))))
|
||||
|
@ -59,7 +79,7 @@
|
|||
(:resources-path project)]
|
||||
(:extra-classpath-dirs project)
|
||||
(checkout-deps-paths project)
|
||||
(find-lib-jars project)
|
||||
(find-jars project)
|
||||
(user-plugins)))
|
||||
|
||||
(defn get-classpath-string [project]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
(:use [leiningen.deps :only [deps]]
|
||||
[leiningen.core :only [ns->path user-settings]]
|
||||
[leiningen.javac :only [javac]]
|
||||
[leiningen.classpath :only [make-path find-lib-jars get-classpath]]
|
||||
[leiningen.classpath :only [make-path find-jars get-classpath]]
|
||||
[clojure.java.io :only [file resource reader]]
|
||||
[leiningen.util.ns :only [namespaces-in-dir]])
|
||||
(:refer-clojure :exclude [compile])
|
||||
|
@ -165,7 +165,7 @@
|
|||
(empty? (.list (file (:compile-path project)))))
|
||||
(binding [*silently* true]
|
||||
(compile project)))
|
||||
(when (or (empty? (find-lib-jars project))
|
||||
(when (or (empty? (find-jars project))
|
||||
(:checksum-deps project))
|
||||
(deps project))
|
||||
(if (:eval-in-leiningen project)
|
||||
|
|
|
@ -127,15 +127,17 @@
|
|||
(let [deps-task (make-deps-task project deps-set)]
|
||||
(when (seq (deps-set project))
|
||||
(.execute deps-task)
|
||||
(.mkdirs (File. (:library-path project)))
|
||||
(copy-dependencies (:jar-behavior project)
|
||||
;; Leiningen's process only has access to lib/dev.
|
||||
(if (or (= :dev-dependencies deps-set)
|
||||
(:eval-in-leiningen project))
|
||||
(str (:root project) "/lib/dev")
|
||||
(:library-path project))
|
||||
true (.getReference lancet/ant-project
|
||||
(.getFilesetId deps-task))))
|
||||
(when-not (or (:local-repo-classpath project)
|
||||
(:eval-in-leiningen project))
|
||||
(.mkdirs (File. (:library-path project)))
|
||||
(copy-dependencies (:jar-behavior project)
|
||||
;; Leiningen's process only has access to lib/dev.
|
||||
(if (or (= :dev-dependencies deps-set)
|
||||
(:eval-in-leiningen project))
|
||||
(str (:root project) "/lib/dev")
|
||||
(:library-path project))
|
||||
true (.getReference lancet/ant-project
|
||||
(.getFilesetId deps-task)))))
|
||||
(.getReference lancet/ant-project (.getFilesetId deps-task))))
|
||||
|
||||
(defn native-deps [project]
|
||||
|
|
Loading…
Reference in a new issue