2015-01-09 24 views
3

當我與gradlew deployJelastic一起運行時,我沒有輸出。我怎樣才能讓Gradle ant記錄工作?

task deployJelastic() { 
    logging.level = LogLevel.INFO 
    ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath) 
    ant.jelastic(email: "foo", 
      password: "bar", 
      dir: "", 
      filename: "baz-1.0.war", 
      context: "", 
      environment: "env", 
      apihoster: "app.whelastic.net") { 
    } 
} 

如果我gradlew deployJelastic -i運行的任務,我讓所有的螞蟻輸出我要找的。

我不想更改任何其他任務的日誌記錄輸出,但出於某種原因,我無法獲得此推薦的Gradle方法。

從Gradle的日誌頁面。 http://www.gradle.org/docs/current/userguide/logging.html

要在任務執行期間更改標準輸出或錯誤的日誌級別,任務還會提供一個LoggingManager。

這是我正在訪問和設置在這裏。 logging.level = LogLevel.INFO

我正在使用此設置從命令行執行。

Build time: 2014-11-24 09:45:35 UTC 
Build number: none 
Revision:  6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a 

Groovy:  2.3.6 
Ant:   Apache Ant(TM) version 1.9.3 compiled on December 23 2013 
JVM:   1.7.0_71 (Oracle Corporation 24.71-b01) 
OS:   Windows 7 6.1 amd64 

回答

0

我能夠像這樣工作。顯然{}中的內容是任務的配置。這就是你想要在任務對象上調用setter的事情。 doLast是一個接受一組要執行的命令的閉包。因此,如果您使用此表單,您可以定義一個任務,完成頂部的所有任務配置,然後在doLast {}閉包中編寫該任務假定要執行的任何代碼。

我覺得這非常令人困惑,但是經過幾十次迭代的任務定義之後,我發現這是最好的。順便說一句,我不知道如何通過使用< <運算符與最終的任務動作相互作用,所以你的里程可能會有所不同。我不知道doLast是否只在追加任務列表中的最後一個地點時被定義,或者它是否是某個確保最後一個地方的特殊地點。

task deployJelastic(name: 'deployJelastic', dependsOn: war) { 
    logging.level = LogLevel.INFO 
    def environmentSuffix = project.properties.enviromentSuffix ?: "test" 
    doLast { 
     ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath) 
     ant.jelastic(email: "", 
       password: "", 
       dir: project.projectDir.absolutePath + "/build/libs/", 
       filename: "ServeDirtyLibsInJava-${project.version}.war", 
       context: "", 
       environment: "foo-${environmentSuffix}", 
       apihoster: "app.whelastic.net") //Got this from http://docs.jelastic.com/jelastic-hoster-info 
    } 
}