Io chiamo ant.signjar da uno script gradle. Come posso acquisire l'output? Non l'ho nemmeno gestito facilmente per elevare l'output da INFO a un altro livello, né per intercettare o avvolgere l'output per gli avvisi di errore a livello WARN. Attualmente il signjar fa eco al fatto che il certificato scadrà presto, ma questo non è mostrato a livello WARN che non è così bello.Come intercettare o elevare i messaggi di registro quando si chiama un'attività Ant da Gradle
risposta
Suppongo che l'attività Ant utilizzi il framework di registrazione di Ant e non solo la stampa su standard. In tal caso, hai provato quanto segue?
task taskThatCallsAntTask {
logging.level = LogLevel.INFO
}
Se configurato in questo modo, il livello di log sarà cambiato per INFO mentre l'attività è in esecuzione (e ritornato di nuovo in seguito), non importa quale livello è impostato il login quando si richiama Gradle. Si noti che non è possibile elevare il livello di registro di un evento di registro Ant; dipende dall'attività Ant a quale livello registra.
Funziona, ma dà troppa registrazione in quanto stampa anche altri messaggi che non sono avvisi. Preferirei davvero se potessi intercettare l'output ed elevarlo su un ambito per-line. Qualche idea su questo? – Vampire
Invia una richiesta di funzionalità (* idea *) su http://forums.gradle.org. –
Fatto così a http://forums.gradle.org/gradle/topics/interception_of_ant_task_output, grazie – Vampire
Ecco un metodo che acquisisce l'output di un'attività Ant registrando un BuildListener personalizzato per la durata della chiamata. Utilizzo
def captureAntOutput(ant, Closure command) {
def buffer = new ByteArrayOutputStream()
def captureStream = new PrintStream(buffer, true, "UTF-8")
def listener = new org.apache.tools.ant.DefaultLogger(
errorPrintStream: captureStream,
outputPrintStream: captureStream,
messageOutputLevel: org.apache.tools.ant.Project.MSG_INFO
)
ant.project.addBuildListener(listener)
project.configure(ant, command)
ant.project.removeBuildListener(listener)
return buffer.toString("UTF-8");
}
Esempio:
String result = captureAntOutput(ant) {
echo(message: "hello")
}
assert result.contains("hello")
- 1. Percorso di classe per i plugin di formiche quando si utilizza ANTBuilder da Gradle
- 2. Come si de-elevare i privilegi di un processo figlio
- 3. Perché si chiama I/O sovrapposti?
- 4. Timestamp nel registro Ant?
- 5. Quando o se eliminare HttpResponseMessage quando si chiama ReadAsStreamAsync?
- 6. Come si ottiene un oggetto ListView da elevare?
- 7. Formato messaggi di registro come albero
- 8. È possibile utilizzare l'API di Android per intercettare e leggere i messaggi dell'operatore (messaggi USSD)?
- 9. Come si chiama quando un'interfaccia "eredita" da un'altra?
- 10. Come posso intercettare i messaggi da un dispositivo USB su Linux?
- 11. Intercettare messaggi SMS in entrata e modificarlo
- 12. Come si "refactoring" i file ant build.xml?
- 13. Come posso disabilitare i messaggi di registro MongoDB nella console?
- 14. Asp.net core + IIS Express. Come visualizzare i messaggi di registro?
- 15. Quando si chiama Edge.js da C#, come si agganciano lo stdout e lo stderr?
- 16. System.IO.IOException quando si chiama System.Console.WindowWidth
- 17. Costruire APK con Gradle IDE esterno (migrazione da Ant)
- 18. Jailbreak IOS Come intercettare SMS/Messaggi di testo
- 19. Come si chiama quando si esegue l'override di un metodo mentre si chiama un costruttore?
- 20. Come intercettare ERR quando si usa 'set -e' in Bash
- 21. NullReferenceException quando si chiama NavigationContext
- 22. ActivityNotFoundException quando si chiama Intent.ACTION_CALL
- 23. Messaggi registro raccolta dati obsoleti
- 24. Errore di segmentazione quando si chiama clock()
- 25. Come vengono passati i parametri quando si chiama Printf da 64 bit asm?
- 26. SecurityException quando si chiama getLastKnownLocation
- 27. Gradle - modifica Token di inizio/fine quando si utilizza ReplaceTokens
- 28. Come utilizzare l'attività formica di gradle da gradle?
- 29. xampp openssl errori quando si chiama openssl_pkey_new();
- 30. Proguard Android non rimuove tutti i messaggi di registro
Come un lato nota: Gradle fornisce il [plug firma] (http://gradle.org/docs/current/userguide/signing_plugin.html) per la firma artefatti quindi non è necessario utilizzare l'attività Ant. –
@BenjaminMuschko Conosco il plug-in per la firma, ma la documentazione dice che è solo per la generazione di firme PGP di file, ad es. per il caricamento su Maven Central. Come posso firmare un file JAR con il plugin di firma? – Vampire