Enforces a nREPL dependency and a clojure-complete dependency for the :repl profile. Previously, the first found :repl profile from `project.clj`-`profiles.clj`-default was returned and merged into the real profile. Now all :repl profiles that are found are merged into the active profile. The dependencies are tagged with the ^:displace tag, and as such will be discarded if a collision occurs. The changes made `repl-profile-in-project` fail as it did not contain `leiningen.core.project/empty-dependencies`, which has a :reduce tag in its metadata for handling dependency merging. The dependency merger expands the version to its url, hence the change to a url map. Also removed a TODO from the file, fixed by 27fe39d.
An object with the metadata flag `:displace` set signals that, if a merge conflict appears, this object is to be discarded. Likewise, `^:replace` signals that this object should be kept in a merge conflict. However, previous functionality only tested if the right element had the `:replace` flag, or if the left element had the `:displace` flag. This commit resolves this by checking whether the left element has a `:replace` flag and the right element has a `:displace` flag, and handles accordingly to the semantics explained in the previous paragraph. Whenever two elements where both has the `:displace` flag is merged, the leftmost is picked, and their metadata is merged. Likewise for the `:replace` flag. The elements will not lose their `:displace` and `:replace` flags, as they have not really been preferred over another element. The `nil?` tests have been placed at the top to reflect that nil is the lack of a value, not a value itself. As such, elements will not be "preferred" or "discarded" over nil/nothing.
Fix deploy link in tutorial
Squashing typos in the plugin section of README.md
Squashing typos in the plugin section
…git-repo Skip git revision in pom if empty git repo. Fixes #887.
Tests if the git ref path exists before slurping the SHA from it. If it does not exist, return nil instead of throwing an error. Also remove empty references to the SHA where they may occur.
For "important" events, aether gives us enough info to figure out which repo it is happening from. Lets use it instead of trying to match from project data. Previously matching from the project data would be incorrect and output failures or not output anything for transative repos.
Previously the output for downloading files would just say "failed to find". Instead output the fact checksums were invalid, and from which repository.
Make javac run in a subprocess. Fixes #809.
Also added ^:displace to avoid adding multiple clojure-versions onto the classpath, and fully expanded non-`clojure.core` namespaces.
If we're not making javac run in a subprocess, libraries the project depends on which leiningen has another version of will clash. This is because leiningen append its standalone to java's bootclasspath, which makes the ToolProvider add these classpaths automatically into the java compiler it returns. By starting a subprocess without leiningen added to the bootclasspath, we avoid this library clashing. UI changes as a result of this patch: Whenever javac fails, the task one wanted to run will be responsible for aborting Leiningen, whereas javac did this itself when it discovered that the compilation failed. As we're running in a subprocess, an abort message such as Uberjar aborting because jar/compilation failed: Subprocess failed will appear, though this will only be appended to the javac error message and the "Compilation of Java sources (lein javac) failed." message. This commit also adds the overhead of starting a subprocess when one have to compile java sources, but it will not start one if no .class-files are outdated/not existing. Not tested on Windows.
Removes run task aliases within metadata. fix #882
Removes the task to be run residing within a project's metadata (inside :without-profiles) in addition to the original map, in order to prevent "with-profile" from reviving already used aliases.
Add :java-opts as an alias for :jvm-opts
…one the vars) This makes it so that a selector such as :only can prevent unnecessary loading of namespaces that they aren't going to work on. It is a way for a selector that knows which namespaces it will touch by the selector's arguments and the namespace names themselves to not have to load all namespaces. This commit also fixes a bug introduced by a recent pull request where 'namespaces' could not be resolved. Per discussion with technomancy, provided a default test selector *always*.