mercoledì 22 aprile 2009

Ricavare classpath da un JUnitTest eseguito da maven

Se da una classe java voglio sapere il classpath usato per l'esecuzione della stessa, basta fare:
String classpath = System.getProperty("java.class.path");

Questa cosa, se fatta da un JUnitTest, non funziona se il test è eseguito da maven. Infatti il codice qui sopra tornerebbe il classpath usato per il lancio di maven. Per sapere invece il classpath usato per l'esecuzione del test, bisogna cambiare property:
String classpath = System.getProperty("surefire.test.class.path");

Debug di test eseguiti da maven

Ogni tanto succede che un JUnitTest eseguito da eclipse funzioni, mentre eseguito da maven vada in errore. Se la causa dell'errore non è chiaro, la cosa migliore è fare un debug del test eseguito da maven.
A complicare la cosa, maven esegue i test in un processo separato.
Innanzitutto bisogna dire a maven di lanciare i test nel processo separato in modalità di debug. Questo si fa lanciando maven nel seguente modo:
mvn -Dmaven.surefire.debug test

La porta su cui connettersi per il debug è la 5005. Per cambiarla bisogna usare questa sintassi:
mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" test

Si può anche fare in modo che maven non lanci i test in un processo separato:
mvn -DforkMode=none test


Tutto questo lo trovate anche qui

giovedì 2 aprile 2009

Server ssh su ubuntu

L'installazione base di kubuntu non mi ha installato il server ssh.
Per capirci, non esiste alcun file /etc/init.d/ssh.
Per installarlo basta installare il pacchetto openssh-server.