我在Groovy中有一个正在工作的小应用程序。目前,我可以在命令行上对其进行测试,但是我需要将其与Jenkins服务器集成。因此,我考虑过将其与Gradle集成在一起,以Jenkins可以读取的标准格式生成测试输出。(请考虑一下,我是Groovy,Gradle,Jenkins和JVM环境的新手)。
目前,我所有的测试都位于一个MyTest扩展的类中GroovyTestCase。我可以用一些bash脚本来运行它
MyTest
GroovyTestCase
#! /bin/bash DIR=$( cd "$( dirname "$0" )" && pwd ) LIBS="$DIR/lib/*" groovy -cp "$LIBS" path/to/MyTest.groovy
在此布局中,有很多我不喜欢的东西:
lib
Gradle似乎正是我需要的工具。但是我发现的所有文档均假设您具有Java,Ant,Maven和整个生态系统的先前知识。
创建有效的Gradle项目的基本步骤是什么?
我已经按照这里的建议重新组织了目录结构,但是我不明白如何声明依赖关系。例如与此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' } }
获得log4j从我的lib目录,我得到
log4j
A problem occurred evaluating root project 'alfred'. Cause: Could not find method flatDir() for arguments [build_3urmo05tgpv3e97u7h8ij47i3$_run_closure1_closure3@64c7f7c4] on root project 'alfred'.
迫在眉睫的问题是,您需要将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'
'org.apache.log4j:log4j:1.2.0'
和
group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0'
可以表示为 'org.codehaus.groovy:groovy: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' }