Graded

2012-07-10 21 views
6

Ant görevini çağırırken günlük iletilerini nasıl engellerim veya yükseltirim Bir gradle komut dosyasından ant.signjar'ı ararım. Çıktısını nasıl alabilirim? Çıktısını INFO'dan başka bir seviyeye yükseltmek veya çıkışı hata uyarılarına SÖNME seviyesine getirmek ya da kapamak için kolayca idare edemedim. Şu anda bu belge, sertifikanın yakında süresinin dolduğunu gösteriyor, ancak bu çok hoş olmayan WARN seviyesinde gösterilmiyor.Graded

+0

: Gradle [imzalama eklentisi] içerir (http://gradle.org/docs/current/userguide/signing_plugin.html) imzalama eserler, böylece Ant görevini kullanmanız gerekmez. –

+0

@BenjaminMuschko İmza eklentisini biliyorum, ancak belgeler sadece dosyaların PGP imzalarını oluşturmak için olduğunu söylüyor. Maven Central'a yüklemek için. İmza eklentisi ile JAR dosyasını nasıl imzalarım? – Vampire

cevap

2

Ant görevinin Ant'in günlüğe kaydetme çerçevesini kullandığını ve yalnızca standart çıktıda yazdırmayı değil varsaydığını varsayalım. Bu durumda, aşağıdakileri denediniz mi?

task taskThatCallsAntTask { 
    logging.level = LogLevel.INFO 
} 

bu şekilde yapılandırılan

, günlük düzeyi Gradle baþlatýrken ayarlandığı log seviyesi ne olursa olsun, görev yürütülürken INFO değiştirildi (ve geri sonradan intikal) alınacaktır. Bir Ant log olayının günlük seviyesini yükseltemeyeceğinizi unutmayın; Hangi seviyede kaydedildiği Ant görevine kalmış.

+0

Bu, ancak uyarıları olmayan diğer iletileri de yazdırdığı için çok fazla günlüğe kaydetme sağlar. Çıkışı kesip kavramak ve hat başına kapsamı yükseltmek isterdim. Bunun hakkında bir fikrin var mı? – Vampire

+0

http://forums.gradle.org adresinden bir özellik isteği (* fikir *) gönderin. –

+0

http://forums.gradle.org/gradle/topics/interception_of_ant_task_output adresinde bunu sağlayın, teşekkürler – Vampire

0

Burada, Arama süresi boyunca özel bir BuildListener kaydı yaparak bir Ant görevinin çıktısını yakalayan bir yöntem var.

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"); 
} 

Örnek kullanım: bir yan not olarak

String result = captureAntOutput(ant) { 
    echo(message: "hello") 
} 
assert result.contains("hello")