2012-07-17 53 views
2

我有一個在Groovy中做的小工作。目前我可以在命令行上測試它,但我需要將它與Jenkins服務器集成。因此,我曾想過將它與Gradle集成,以Jenkins可以讀取的標準格式生成測試輸出。 (請考慮我是Groovy,Gradle,Jenkins和JVM環境的新手)。從普通Groovy移動到Gradle

目前我所有的測試都在一個MyTest類中,這個類擴展了GroovyTestCase。我可以像一個小bash腳本運行

#! /bin/bash 

DIR=$(cd "$(dirname "$0")" && pwd) 
LIBS="$DIR/lib/*" 

groovy -cp "$LIBS" path/to/MyTest.groovy 

還有,我不要在此佈局一樣多的東西:

  • 首先,我想測試分爲多個類別,並加入他們到一個測試套件,但測試案例有一個優勢,它可以自動運行在Groovy
  • 第二,正如我所說,我想能夠獲得一份測試報告,由詹金斯
  • 第三,我不知道是否將所有需要的罐子放入01中目錄是一個很好的做法 - 可能不是。

Gradle看起來正是我需要的工具。但是我發現的所有文檔都假定了以前有關Java,Ant,Maven和整個生態系統的知識。

創建工作Gradle項目的基本步驟是什麼?

我重組了目錄結構的建議here,但我不知道如何聲明依賴。例如本的build.gradle

apply plugin: 'groovy' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0' 
    runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0' 
} 

我得到錯誤

unable to resolve class org.apache.log4j.Level 
@ line 5, column 1. 
    import org.apache.log4j.Level 
^

如果我改變倉庫來

repositories { 
    mavenCentral() 
    flatDir { dirs 'lib' } 
} 

從我lib目錄中獲取log4j,我得到

A problem occurred evaluating root project 'alfred'. 
Cause: Could not find method flatDir() for arguments [[email protected]] on root project 'alfred'. 
+0

發佈您的gradle構建腳本和實際發生的錯誤可能會有所幫助... – 2012-07-17 16:03:13

+0

事實上,我意識到我已經在其他地方複製了一個基本的build.gradle,其中包含'groovy group':org.codehaus.groovy' ,名稱:'groovy',版本:'1.7.0''。我改變了'groovy組:'org.codehaus.groovy',名字:'groovy',版本:'1.8.0',現在編譯錯誤消失了。我會試驗更多並更新問題 – Andrea 2012-07-17 16:05:40

回答

6

當前的問題是您需要將log4j作爲編譯時間依賴項導入。

解決方法是改變

runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0' 

compile group: 'org.apache.log4j', name: 'log4j', version: '1.2.0' 

基本上,一個運行時依賴性使得可用的代碼在運行時(對於反射,傳遞依賴,等),但不能在編譯時間。如果你正在編譯log4j,你需要編譯時間。

編譯時可用的所有東西在運行時自動可用。

您希望做的下一件事就是爲您的maven風格的依賴使用terser語法。

group: 'org.apache.log4j', name: 'log4j', version: '1.2.0' 

可以表示爲'org.apache.log4j:log4j:1.2.0'

group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0' 

可以表示爲'org.codehaus.groovy:groovy:1.8.0'

把它放在一起,和你的build.gradle文件應該是這樣的:

apply plugin: 'groovy' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    groovy 'org.codehaus.groovy:groovy:1.8.0' 
    compile 'org.apache.log4j:log4j:1.2.0' 
}