Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
223 lines (220 sloc) 9.29 KB

Leiningen TODOs

See also

For 2.0.0


  • [ ] Reduce Aether verbosity (#610)
  • [ ] Improve speed of trampoline restarts (#573)
  • [ ] Isolate target dir per profile (#468)
  • [ ] Honor mirror for search indices (#281)
  • [ ] Drop clojars snapshots from default repos (#241)


  • [X] Address chaining issues in with-profile (#632)
  • [X] Address gpg agent issues (#615)
  • [X] Stale directory clutter (#589)
  • [X] Fix de-dupe with :classifier/:extension (#645)
  • [X] Check project for :scm (#640)
  • [X] Mirror support (#271)
  • [X] Only look up repo credentials when necessary (#657)
  • [ ] Allow jars to be signed, document in deploying guide. (#519)
  • [X] Fix javac to abort on failure (#658)


  • [X] Don’t re-extract native deps (#535)
  • [X] Make offline profile use dev profile (#514) (LHF)
  • [X] Fix $JVM_OPTS (#565)
  • [X] Move lein-newnew plugin into default profile (#540)
  • [X] Force checking of snapshots (#518) (LHF)


  • [X] Pretty-print pom
  • [X] deps :tree
  • [X] Use blocking instead of polling for repl task (#433)
  • [X] Show aliases in lein help (#407)
  • [X] Use pomegranate to dynamically resolve missing “lein new” templates (newnew #12)


  • [X] readme
  • [X] plugin guide
  • [X] tutorial
  • [X] hacking guide (moved to leiningen-core readme)
  • [X] migration guide
  • [X] sample project.clj
  • [X] deploy guide

Changes for preview release

  • [X] Finish designing and implement profiles
  • [X] Dynamic recalculating of classpath via pomegranate
  • [X] Honor :plugins as separate from :dependencies
  • [X] Rework prep function to ensure that AOT/javac happens when needed
  • [X] Move pom generation to pomegranate or leiningen
  • [X] More flexibility for jarring
  • [X] Allow tasks to add in their own injections
  • [X] Allow disabling of all injected code
  • [X] Activate :test profile in test task
  • [X] Resurrect native deps
  • [X] Trampoline
  • [X] Allow hooks to provide activate fn to avoid load-time side-effects
  • [X] Hook up reply to nrepl for new repl task
  • [X] Look for aliases in project.clj
  • [X] javac (can we do this without ant?)
  • [X] Get off snapshots (data.xml, reply)
  • [X] Pass user-level repository auth settings on to pomegranate
  • [X] Use ordered map for :dependencies and :repositories?
  • [X] Project middleware
  • [X] Top-level :exclusions
  • [X] Better error messages for misformatted :dependencies/:repositories
  • [X] Utility function for plugins to conditionally add dependencies
  • [X] Update new task
  • [X] Switch user-settings to checking :user profile sans project
  • [X] Offline mode

Adapt existing tasks to new API

  • [X] classpath
  • [X] clean
  • [X] compile (minus transitive cleaning)
  • [X] deps
  • [X] test
  • [X] jar (minus shell wrappers)
  • [X] retest
  • [X] run
  • [X] new (merge from lein-newnew)
  • [X] help (needs tests)
  • [X] search
  • [X] pom (steal from depot)
  • [X] install (minus shell wrappers)
  • [X] uberjar
  • [X] deploy

For 1.7.0

  • [X] System/exit in repl (#324)
  • [X] interactive task takes full CPU (#346)
  • [X] whole-namespace test selectors (#242)
  • [X] Auto-exclusions for dev-deps and plugins (#375)
  • [X] Investigate NPE on lein test (#388)
  • [X] Bring back rlwrap (#381)

For 1.6.2

  • [X] resources with eval-in-leiningen (#248)
  • [X] fix :omit-default-repositories wrt central (#211)
  • [X] deps should run an implicit clean
  • [X] don’t let multiple versions of a plugin interfere with each other (#301)
  • [X] non-jar deps on classpath (#244)
  • [X] recover from error in interactive (#234)
  • [X] use java class in run task (#249)
  • [X] fix deploy with new maven-ant-tasks

For 1.6.1

  • [X] upgrade hooke
  • [X] make it easier to use :repl-options [:print clojure.pprint/pprint]
  • [X] fix shutdown-agents with repl
  • [X] don’t clear out lib/dev upon jarring (221)
  • [X] support alternate main namespace for uberjar.

For 1.6.0

  • [X] Trampoline functionality
  • [X] move exit-after-tests check to eval-in-project (discuss on list?)
  • [X] don’t freak out when attempting to download non-existent indices
  • [X] improve error message for unconfigured deploy
  • [X] make search work outside project
  • [X] clear up home directory duality in Windows/MinGW
  • [X] show total result count in search results
  • [X] transitive native-deps support
  • [X] make :repl-init change initial ns of repl and swank
  • [X] more flexibility in search results
  • [X] support ns/name in run task
  • [X] add option to use ~/.m2-based classpath instead of copying to lib/
  • [X] Merge lein-search
  • [X] Merge lein-retest
  • [X] Merge native-deps
  • [X] Add leiningen.util.injected namespace

For 1.5.1

  • [X] Move ns docstrings to :help-summary to allow AOT given CLJ-130.
  • [X] Put :eval-in-lein deps in lib/dev for leiningen process access.
  • [X] Revert back to :warn on checksum failure.
  • [X] Fix LEIN_ROOT warning in bin/lein.
  • [X] Honor user-settings in more places.

For 1.5.0

  • unify auth options between :repositories and :deploy-to
  • suppress socket closed stacktrace in interactive task
  • checksum deps set; don’t re-download if unchanged
  • allow whitelist for post-compile class file deletion
  • fix warn-on-reflection for repl task (#176)
  • explain how to do manual self-install if it fails
  • failure to upgrade leaves lein as a zero-length file (#153)
  • ensure project jar is last in uberjar (#178)
  • investigate uberjar slowdown? (#160)

For 1.4.0

  • socket timing issues with interactive tests
  • connect to socket repl in interactive task
  • :uberjar-exclusions?
  • :all test-selector built-in
  • test selectors need to support things like constantly, complement
  • detect missing level of nesting in project.clj’s deps/dev-deps
  • clear out non-transitive .class files after AOT Luc Prefontaine has code for this.
  • plugin task for managing/upgrading plugins Manually copying jar files into ~/.lein/plugins is pretty lame. Let’s get a task to handle this. It could be implemented as a plugin at first, maybe.
  • merge lein-run task? Ditto; this is something useful that many projects need.
  • expose original pwd as property
  • merge lein-javac task Also make the compile task run it where appropriate.
  • test selectors using metadata; run a subset of tests We could have a :test-selectors key in project.clj that would map keywords to predicate functions. Then the test task could take a keyword argument and only run the subset of the tests for which calling the predicate on its metadata returns true.

For 1.3.0

  • specify min. lein version in project.clj
  • :omit-source
  • lein install $PROJECT (works outside project root)
  • write shell wrappers on install
  • include shell wrapper in jar file from template
  • set arbitrary jar metadata
  • errors in read-project should show filename
  • user-level plugin installation and activation
  • user-level config file (with hook list)
  • get no-project-needed from arglist
  • argument chaining
  • interactive task
  • resources in generated pom

For 1.2.0

  • Fix self-build clean problem
  • Don’t catch reader exceptions unless they are from ^D
  • document checkout dependencies
  • Re-enable rlwrap
  • Move the intro into a tutorial
  • bin script has stabilized; self-install for dev versions should work
  • accept list of namespaces to compile from command-line options
  • document version ranges
  • include lib/dev in find-lib-jars
  • document plugin creation
  • document all known project.clj keys
  • disable frickin [null] logging from ant (come on srsly)
  • recover from missing test exit map gracefully
  • Help task should display arglist
  • walk up the filesystem to find project.clj
  • make inter-task dependencies honor hooks
  • wire repl task up to socket repl
  • allow \*warn-on-reflection\* to be turned on in project.clj
  • Expose hooks in built-in tasks so plugins may extend them
  • make org.clojure implied for clojure/contrib deps
  • better way to force setFork in eval-in-project
  • rename :namespaces key in project.clj
  • include version in jar filenames
  • classpath task to just print configured classpath
  • move repl task from shell script to clojure code

For 1.1.0

  • upgrade task (patch submitted)
  • doc generation (autodoc plugin)

For 1.0

  • Remove install task dependency on having Maven installed
  • Use -Xbootclasspath where possible
  • Don’t write manifest, pom, etc. to disk when jarring
  • Don’t put uberjar in ~/.m2
  • Perform compilation in either a subprocess or with a separate classloader
  • Allow test task to take namespaces as an argument
  • Fix eval-in-project to let plugins pass in extra args
  • Resources directory added to classpath (for properties, etc)

Git-aware dependencies (experimental back-burner idea)

Talking with Rich after Emerging Langs day 1 Problem: you can pull in two versions of the same library transitively without realizing it if people fork on clojars. How do we detect this problem and de-dupe?

  • What if artifacts could be correlated with the git rev that produced them?
  • They have repository and sha1 metadata in their pom (but no history tree)
  • Cross-correlate with a separate revision metadata store?
Jump to Line
Something went wrong with that request. Please try again.