Motivation: I'm working on a patch right now that will localize the directory ivy uses to write out resolution reports, while allowing us to keep the artifact repository (where all of the jars live) in the user's home directory. This will eliminate a large class of bugs that can currently happen when pants is run concurrently in different workspaces on the same machine. These bugs pop up a _lot_ on Jenkins.
In order for this patch to work, all custom ivysettings.xml will need to thread through a JVM-style property provided by pants in the <caches/> directive in ivysettings.xml. Here's what the default should look like:
<caches
defaultCacheDir="${ivy.cache.repository.dir}"
resolutionCacheDir="${ivy.cache.resolution.dir}"
lockStrategy="artifact-lock-nio"
/>
I think this should be a really easy change, even if you have custom caches. The issue is that it's tough to give a good error message to the user if they've failed to set these properly--instead the failure will happen downstream due to symlink/classpath issues. So I'd like to figure out whether I should investigate a thorough way of generating such an error, or if this is a non-issue and we can get away with just ripping off the bandaid now.