#-*- mode: org -*-
Aether: how would it integrate? Improvement over maven-ant-tasks?
Tests in Nailgun: would it require a separate shell script?
How could nonlinear versions be represented?
Quit using ant’s Java task. It is horrible.
Try a custom classloader approach?
Use Aether instead of maven-ant-tasks?
Rename test-resources to dev-resources
Breaking change; needs to wait for a major version bump.
add option to use ~/.m2-based classpath instead of copying to lib/?
It looks like it would be easy to stop copying things into lib/ and just use Maven’s notion of the project’s dependencies to construct a classpath that references jars straight from ~/.m2.
spin lancet off into its own dependency
I’ve never felt comfortable about simply keeping it inline. On the other hand if we quit using ant then we can skip this. Needs to not be in the default package!
shell wrappers should support multiple versions
We could write out a different “foo-$VERSION” shell wrapper for each version of a project that gets installed and then have the plain “foo” script look for a $VERSION env var if it’s set, and if not just fall back to the latest.
classifiers for specifying what clojure version to use?
As more versions of Clojure start to exist, libraries may want to publish different branches that target different versions of Clojure itself. Classifiers may be the way to separate these out?
a list of dirs to include in the jar when building
Some people have requested this.
re-compile all deps with current clojure version
Another thing that’s going to start becoming more important as more Clojure versions are introduced.
fail gracefully when run without an Internet connection (Issue #100)
improve test coverage
merge push task based on clj-ssh
lein-clojars task doesn’t support DSA keys
integrate plugin task with lein-search
Would be better to be able to leave off version numbers
add search functionality based on standard mvn lucene indexes
lein-search is cool, but it would be better to interoperate with the standard lucene index system that Maven repositories offer. This would also mean getting Clojars to produce those indices.
socket timing issues with interactive tests
connect to socket repl in interactive task
: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.
specify min. lein version in project.clj
lein install $PROJECT (works outside project root)
Possibly take some of this from cljr?
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
resources in generated pom
Fix self-build clean problem
Don’t catch reader exceptions unless they are from ^D
document checkout dependencies
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
upgrade task (patch submitted)
doc generation (autodoc plugin)
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?