I was looking into the problems with the GPG plugin when run from the
release plugin and the problems seem to entirely be problems of the
release plugin and Plexus utils. They are showing up in the gpg
plugin, but any plugin that tries to do anything interactively would
most likely run into the same problems.
1) System.in - the release manager doesn't feed anything from System.in
into the forked process. I tried adding System.in to the
CommandLineUtils.executeCommandLine call, but that just causes a hang.
CommandLineUtils will wait until the "in" stream is completely consumed
(returns -1) before returning. With System.in, that never will happen.
2) Buffered(line style) out - the StreamPumpers use
BufferedInputStream.readLine() to pump from one stream to the other.
This won't work. Anything that does something (like the release plugin
itself) that prompts and then waits for a response on the same line will
appear to just "hang" as the prompt will never make it to the screen.
Basically, those two issues completely prevent us from being able to
un-hard code GPG passphrases from build scripts and such. (unless you
set gpg.useagent to true and use an agent)
MGPG-9 is really a release plugin bug although part of it is
due to plexus-utils not providing the support it would need to work
properly. Most likely, we'll need to add a method in CommandLineUtils
that would just take the raw streams (in/out/err) and do straight byte
copy reads without the line buffering. (and once the process
completely, stop pumping the in stream) (of course, that would then
require another plexus-utils release and then the release plugin would
only work with Maven 2.0.6+ with the utils shaded, but that may be
minor) I'll poke around more and see if I can come up with something.