Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make javac run in a subprocess. Fixes technomancy#809.
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.
- Loading branch information