Нет причин, по которым defproject должен быть формой верхнего уровня. Вы можете создать вызов defproject, создав список аргументов. Единственный улов в том, что defproject - это макрос, поэтому простая функция «apply» не поможет
(def extra-args (read-string (slurp "project-extension.clj")))
(eval (concat '(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT")
extra-args))
Обратите внимание, что это чтение файла, а затем оценка элементов из этого файла. Убедитесь, что вы знаете, откуда этот файл!