Domanda

Ho una sezione in un POM che sembra qualcosa di simile:

<scm>
    <connection>scm:cvs:ext:myhostname:/cvsroot/repo:module_name</connection>
</scm>

Io di solito uso publickey autenticazione per l'autenticazione tramite questo server cvs, anche se dovrebbe accettare la mia password pure.

Quando si tenta di eseguire mvn scm:update, mvn release:prepare, o qualsiasi altro obiettivo Maven che coinvolge il collegamento a questo scm, ottengo il seguente errore:

[INFO] Executing: cmd.exe /X /C "cvs -z3 -f -q update -d"
[INFO] Working directory: C:\Documents and Settings\matt\workspace\projectname
org.netbeans.lib.cvsclient.connection.AuthenticationException: Cannot authenticate. Reason: Publickey authentication failed.
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.ExtConnection.open(ExtConnection.java:136)
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection.connect(CvsConnection.java:166)
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection.processCommand(CvsConnection.java:498)
    at org.apache.maven.scm.provider.cvslib.cvsjava.command.update.CvsJavaUpdateCommand.executeCvsCommand(CvsJavaUpdateCommand.java:53)
    at org.apache.maven.scm.provider.cvslib.command.update.AbstractCvsUpdateCommand.executeUpdateCommand(AbstractCvsUpdateCommand.java:78)
    at org.apache.maven.scm.command.update.AbstractUpdateCommand.executeCommand(AbstractUpdateCommand.java:63)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
    at org.apache.maven.scm.provider.cvslib.AbstractCvsScmProvider.executeCommand(AbstractCvsScmProvider.java:750)
    at org.apache.maven.scm.provider.cvslib.AbstractCvsScmProvider.update(AbstractCvsScmProvider.java:348)
    at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:821)
    at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:770)
    at org.apache.maven.scm.manager.AbstractScmManager.update(AbstractScmManager.java:526)
    at org.apache.maven.scm.plugin.UpdateMojo.execute(UpdateMojo.java:89)

(molto di più del stacktrace ....)

E più in basso nella stacktrace:

Caused by: java.io.IOException: Decrypted PEM has wrong padding, did you specify the correct password?
    at ch.ethz.ssh2.crypto.PEMDecoder.removePadding(PEMDecoder.java:109)
    at ch.ethz.ssh2.crypto.PEMDecoder.decryptPEM(PEMDecoder.java:286)
    at ch.ethz.ssh2.crypto.PEMDecoder.decode(PEMDecoder.java:319)

A seguire:

[ERROR] Provider message:
[ERROR] The cvs command failed.
[ERROR] Command output:

Io corro questo su una macchina Windows, senza cvs eseguibili sul PATH. Io ho la mia chiave pubblica disponibile sotto $HOME/.ssh, ma non sembra come se cvs / Maven / SCM sta caricando qui - come io non sono chiesto la frase chiave per esso

.

Quindi la mia domanda è ... c'è qualcosa di speciale ho bisogno di fare con Maven o il provider / CVS SCM per farlo riconoscere in cui è installata la mia chiave pubblica, o come usare in realtà? Attualmente non sembra come se fosse ancora in uso come io non sono richiamato per la sua passphrase.

È stato utile?

Soluzione

Così, dopo il debug di questo un po 'di più, e scaricare il codice sorgente per il pacchetto maven-SCM-fornitore-cvs, ho scoperto che la biblioteca CVS utilizzata da questo plugin utilizza la stringa vuota ("") per il valore passphrase se trova la propria chiave privata. Per utilizzare la passphrase corretta, la libreria si aspetta di impostare una proprietà di sistema con il nome maven.scm.cvs.java.ssh.passphrase chiave.

Quindi, se corro il mio obiettivo scm:status in questo modo:

mvn scm:status -Dmaven.scm.cvs.java.ssh.passphrase=<my passphrase>

Sono in grado di connettersi a CVS.

Gee - Mi piacerebbe che questo è stato documentato

!

Altri suggerimenti

Ho risolto questo eseguendo il + comando login ssh cvs dalla console prima di usare Maven. Questo aggiunto i numeri magici per $ HOME / .ssh per l'accesso automatizzato al lavoro.

Se questo è a causa di un CERT auto-firmato, controlla la InstallCert codice su come aggiungere il sé firmato cert al cliente. O questo esempio su come sostituire il codice X509 fiducia di default.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top