Sono stato incaricato di creare notifiche automatiche per i nostri script di build Ant. Questo è così che quando qualcuno spinge una distribuzione, il nostro team può ricevere automaticamente un'email a riguardo.Come aggiungere programmaticamente le dipendenze della libreria Ant per l'attività di posta
La scelta più ovvia era quella di utilizzare Ant's mail task, che viene predefinito con Ant:
<target name="notify" description="notify team">
<mail subject="latest deployment">
<from address="[email protected]" />
<to address="[email protected]" />
<message>A new build has been pushed out to prod</message>
</mail>
</target>
Tuttavia, questo risultato è la seguente eccezione di runtime:
java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
Questo perché compito di posta di Ant dipende JavaMail e JavaBeans Activation Framework, le librerie che apparentemente non sono incluse nella sua distribuzione. Perché Ant definisca un'attività che dipende da una libreria ma non include quella libreria non è chiara per me.
Questo problema è già stato discusso in questo post: ant mail task using mail and activation jar in external location. Sulla base delle risposte sembrano esserci due soluzioni.
Il primo consiste nel mettere manualmente queste dipendenze della libreria sul classpath della formica. Questo può essere fatto usando l'argomento della riga di comando -lib
, oppure in eclissi si può usare Window > Preferences > Ant > Runtime > Global Entries
, e quindi aggiungere mail.jar
e activation.jar
(sono abbastanza sicuro che questo equivale allo stesso -lib
, correggimi se sbaglio). Ma questa soluzione non è auspicabile per il nostro team perché significherebbe che ognuno di noi dovrebbe eseguire manualmente questi passaggi. Sto cercando un modo per impegnare semplicemente il mio codice di notifica, e dovrebbe funzionare su un'altra installazione di eclissi dopo l'aggiornamento di svn.
L'altra soluzione nel post collegato parla di un modo per fare quanto sopra a livello di codice, chiamando Ant da se stesso:
<exec executable="ant">
<arg value="-lib"/>
<arg value="PATH_TO_MY_LIB"/>
<arg value="target"/>
</exec>
Il problema di questo è che lo strumento da riga di comando della formica è apparentemente solo incluso con il installazione completa, non la distribuzione di eclissi. Quindi, ancora una volta non c'è modo di farlo funzionare senza alcuna azione manuale da parte di chiunque voglia utilizzare l'attività di posta elettronica.
C'è un modo per automatizzare ciò senza aggiungere un altro passaggio fastidioso alla configurazione del progetto? Non capisco davvero perché sia così difficile da raggiungere - sembra che se l'attività di posta elettronica non fosse predefinita da Ant, sarebbe più semplice. Spero che mi manchi qualcosa.
Avete considerato di utilizzare un elemento di configurazione per questo tipo di attività? Vengono con mail e rapporti molto migliorati. I miei voti sono per http://jenkins-ci.org/ – Jayan