从普通的Groovy转移到Gradle

时间:2012-07-17 16:01:38

标签: testing groovy jenkins gradle

我在Groovy中有一个很小的应用程序。目前我可以在命令行上测试它,但我需要将它与Jenkins服务器集成。因此,我曾考虑将其与Gradle集成,以Jenkins可以读取的标准格式生成测试输出。 (请注意,我是Groovy,Gradle,Jenkins以及JVM环境的新手。)

目前我的所有测试都在一个扩展MyTest的{​​{1}}类中。我可以使用像

这样的小bash脚本来运行它
GroovyTestCase

在此布局中,我不喜欢多种内容:

  • 首先,我想将测试分成多个类并将它们连接到一个测试套件中,但测试用例的优势在于它可以在Groovy中自动运行
  • 其次,正如我所说,我希望能够获得Jenkins消费的测试报告。
  • 第三,我不知道是否将所有必需的罐放入#! /bin/bash DIR=$( cd "$( dirname "$0" )" && pwd ) LIBS="$DIR/lib/*" groovy -cp "$LIBS" path/to/MyTest.groovy 目录是一种很好的做法 - 可能不是。

Gradle似乎正是我需要的工具。但是我发现的所有文档都假设了Java,Ant,Maven和整个生态系统的先前知识。

  

创建有效的Gradle项目的基本步骤是什么?

我已根据建议here重新组织了目录结构,但我不明白如何声明依赖项。例如,使用此build.gradle

lib

我收到了错误

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' } } 目录中获取log4j,我得到了

lib

1 个答案:

答案 0 :(得分: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'
}