Adds :leaky and :pom-scope metadata for profiles. The :dev, :test,
:base and :provided profiles are implemented in terms of these.
Profiles with :leaky metadata affect the pom and jar creation.
Profiles with a :pom-scope metadata of :test or :provided also affect
the dependencies of a pom.
We need to revisit this in a way that doesn't involve hard-coding
profile names into the jar and pom tasks. The question of whether the
profile should be visible to downstream consumers should be determined
by data that's part of the profile (or metadata).
Sometimes we need to override *parts* of a prticular profile on a project-specific base. To a novice
lein user, it is likely not clear how to achieve this. This tip points her in the right direction -
using a composite profile with a "personal" part that can be overriden in `profiles.clj` to change
what is in the "common" part of the profile.
While "Declaring Profiles" states that "Profiles specified in `profiles.clj` will override
profiles in `project.clj`," some less attentive reader can interpret it so that *keys/values* from profiles.clj override those from project.clj, not that the profile as whole is replaced. This changes
tries to make it really clear. (Of course feel free to change the wording as you see fit.)
You can now overide :default in your project.clj to change what profiles are
active when none are specified. As part of this change, default is no longer
used to for built-in settings; these are now stored in the :base profile.
This makes it possible to override :default while still including the :base
profile.
if a profile value is a vector, then combine the values using
combine-profiles. this allows you to remove duplication by putting
shared configuration in "base" profiles.