                                :jar-dir (normalize-path#
                                          (or (:target-dir m#) (:jar-dir m#)
                                              root#))
+                               :java-source-path (normalize-path#
+                                                  (:java-source-path m#))
                                :root root#)))
      (when (:test-resources-path m#)
        (println (str "WARNING: :test-resources-path is deprecated; use "

                                           (name project-name))
                               :version ~version
                               :compile-path (normalize-path#
                                              (or (:compile-path m#)
                                                  (str root# "/classes")))
                               :source-path (normalize-path#
                                             (or (:source-path m#)
                                                 (str root# "/src")))
                               :library-path (normalize-path#
                                              (or (:library-path m#)
                                                  (str root# "/lib")))
                               :test-path (normalize-path#
                                           (or (:test-path m#)
                                           (str root# "/test")))
                               :resources-path (normalize-path#
                                                (or (:resources-path m#)
                                                    (str root# "/resources")))
                               :dev-resources-path
                               (normalize-path#
                                (or (:dev-resources-path m#)
                                    (:test-resources-path m#)
                                    (str root# "/test-resources")))
                               ;; TODO: remove in 2.0
                               :test-resources-path
                               (normalize-path#
                                (or (:dev-resources-path m#)
                                    (:test-resources-path m#)
                                    (str root# "/test-resources")))
                               :target-dir (normalize-path#
                                            (or (:target-dir m#) (:jar-dir m#)
                                                root#))

        identity
        args))

(defn- normalize-path [project-root path]
  (when path
    (let [f (File. path)]
      (.getAbsolutePath (if (.isAbsolute f) f (File. project-root path))))))

(defmacro defproject [project-name version & args]
  ;; This is necessary since we must allow defproject to be eval'd in
  ;; any namespace due to load-file; we can't just create a var with
  ;; def or we would not have access to it once load-file returned.
  `(let [m# (apply hash-map ~(cons 'list (unquote-project args)))
         root# ~(.getParent (File. *file*))
         normalize-path# (partial ~normalize-path root#)]
     (alter-var-root #'project
                     (fn [_#] (assoc m#
                               :name ~(name project-name)
