The site:deploy with "clean" (clean target site before deployment) functionality does not respect the args set in maven.ssh.args. This causes problems if the maven.ssh.args property specifies a particular SSH keypair to use; when cleaning, the plugin will thereby try to ssh to the target without specifying a key (or any other args) and will fail.
For example:
--8<-- project.properties --8<--
maven.scp.args=-i /home/jdunn/.ssh/id_dsa_maventest
maven.site.deploy.method=ssh
maven.ssh.args=-i /home/jdunn/.ssh/id_dsa_maventest
maven.username=jdunn
maven.site.deploy.clean=true
--8<-- project.properties --8<--
where ~/.ssh/id_dsa_maventest is a public/private keypair verified to work interactively, then
% maven site:deploy
.
.
.
site:sshdeploy:
[tar] Building tar: /home/jdunn/devel/platform/target/platform-1.0-site.tar
[gzip] Building: /home/jdunn/devel/platform/target/platform-1.0-site.tar.gz
[delete] Deleting: /home/jdunn/devel/platform/target/platform-1.0-site.tar
[echo] Cleaning destination first
jdunn@host01's password:
jdunn@host01's password: [exec] Permission denied, please try again.
I think this patch would probably fix it.
— plugin.jelly.bak 2005-04-22 16:27:06.055396318 -0400
+++ plugin.jelly 2005-04-22 16:28:15.625727301 -0400
@@ -152,7 +152,7 @@
<j:if test="${siteClean}">
<echo>Cleaning destination first</echo>
<exec dir="." executable="${maven.ssh.executable}">
+ <arg line="${maven.ssh.args} -l ${siteUsername} ${siteAddress} 'rm -r ${siteDirectory}'" />
</exec>
</j:if>
However, my view is that it would be nicer if the "clean" target were able to remove only files that don't exist in the new tarball, so that while the tarball is being pushed over SSH (and if the push fails) then the site doesn't suddenly go AWOL?