added a comment - - edited
This may help... but it means that users will be responsible to use those ttl declarations.
I don't like that.
It doesn't seem good to me that IDE functionality becomes unusable unless the user writes their script in a certain way.
In practice, those dependencies resolved with "+" would probably not change that often. Could we not find some way to exploit that? (And I mean in a way that doesn't put the onus on the user to write their build script in a certain way).
Maybe there need to be two kinds of "refresh" where the "normal" refresh uses the "infinite" limit but there's some way to ensure the very expensive remote refresh is done in a way that is totally non-invasive to the rest of the process. (I.e. bringing the cache up to date is something that could be done in background... while the rest of it, which is called upon directly from the IDE or the user, just used the best available data from that cache even if isn't necessarily the most-up-to-date.
And for the rare circumstances where you know that an external dependency really needs to be refreshed right now, we might provide some special functionality (e.g. like a "clear/refresh cache" button)... or allowing user to explicitly refresh a specific dependency.
BTW, this may also help adressing the "offline usage" that people where asking for in that other issue.
I realize there will always be situations where there's no avoiding the wait (if the cache is totally empty for example). But trying to minimize those cases is important.