I'm glad the implementation simplified with reusing `inputs`, but I think we should try to avoid renaming in case the user has write access, not deletion access. This part should just remain as `out`, but you can pass `outPath` into `makeJar` as a parameter.
You can rename the first param of this method `out: File` to `outPath0: File`, and basically do what you did in `doAppendContentHash` upfront.