2011-11-23 8 views
5

miei test JUnit eseguiti tramite formica 1,7 da dentro il mio ambiente Eclipse, ma i failes compilazione quando si esegue il compito junitreport:Ant <junitreport> fallire a causa di di Xalan (XSLT) funzione di elaborazione sicuro

generazione non riuscita ... /build.xml:222: errori durante l'applicazione delle trasformazioni: javax.xml.transform.TransformerException: java.lang.RuntimeException: Uso della funzione di estensione 'xalan: //org.apache.tools.ant.util.StringUtils: sostituire ' non è consentito quando la funzione di elaborazione protetta è impostata su true.

ho cercato di capire come rendere il compito junitreport disabilitare la funzione di elaborazione sicura (che non ho bisogno ed è solo a modo mio, a questo punto), ma non ho idea di come dal momento che il compito doesn' t avere un attributo per disabilitarlo. O dovrei fare qualcos'altro per far funzionare questo?

risposta

3

Questo può essere correlato a un molto simile known bug in Ant 1.8.2.

Il bugfix for Ant 1.8.3 sia stato commesso, ma Apache Ant 1.8.3 deve ancora essere rilasciato a partire dal 25 gennaio 2012. La descrizione WhatsNew per questo bugfix è:

<junitreport> did not work in embedded environments on JDK 7. 
Bugzilla Report 51668. 

volta 1.8.3 Ant è rilasciato e è incorporato nel plugin Ant Eclipse, questo problema dovrebbe essere risolto.

Nel frattempo, è possibile modificare lo script di build in modo che esegua solo la destinazione JUnitReport se esegue Ant da una riga di comando anziché da Eclipse. Per effettuare questa determinazione, cerca un file presente nella normale cartella ANT_HOME%/lib che non è presente nella cartella del plug-in di Eclipse Ant (o crea un file lì), quindi imposta una proprietà se il file viene rilevato. PER ESEMPIO.

Poco prima della fine del bersaglio JUnit:

<available file="${ant.home}/lib/ant.pom" property="full.ant"/> 

All'inizio del bersaglio JUnitReport:

<target name="junitreport" description="Create a consolidated test results report" if="full.ant"> 

I frammenti Ant sopra funzionano perché ant.home è impostato sulla Cartella Plugin Ant Eclipse solo quando Ant viene eseguito da Eclipse. Quando Ant viene eseguito da una riga di comando, ant.home corrisponderà alla variabile di ambiente ANT_HOME. Si suppone inoltre che sia una proprietà antispecifica eclipse.running, ma non è stato possibile rilevare questa proprietà.

Un'altra opzione intermedia è quella di scaricare l'ultima file JAR di Ant nightly build dal this link sulla pagina del progetto Apach Formica, poi mettendo i file JAR all'interno del corrispondente sottocartella plugin di Eclipse Ant. Non ci sono garanzie che funzionerà.

0

ho cercato di capire come rendere il compito junitreport disabilitare la funzione di elaborazione sicura (che non ho bisogno ed è solo a modo mio, a questo punto), ma non ho idea di come dal momento che il compito doesn' t avere un attributo per disabilitarlo.

È sempre possibile commentare l'attività.

+0

Grazie per la risposta. Forse la mia frase non è stata chiara. Mi piacerebbe disabilitare la 'funzione di elaborazione sicura' ma ho bisogno di junitreport. – Almer

Problemi correlati