2014-10-06 25 views
3

创建AntBuilder对象时,尝试创建常规文件AntBuidler对象我得到异常下面无法在常规gradle这个

java.lang.NoClassDefFoundError: org/apache/tools/ant/BuildException 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) 
    at java.lang.Class.getDeclaredConstructors(Class.java:1901) 
    ..... 
    at at features.step_definitions.RewardEventsGeneration.GetEventXML(RewardEventsGeneration.groovy:40) 

在✽.ThenupdateLoyaltyInfo事​​件应该生成

我已经加入了相关的罐子我的lib文件夹,然后build.gradle

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

我的代码中放置下面的代码如下

def GetEventXML (userId, eventTypeIn) 
{ 
    def Host = "10.77.69.14" 
    def UserName = "system" 
    def Password = "password" 
    def Path = "/temp" 

    def eventTypeToLookFor = "eventType=\"$eventTypeIn\"" 
    def resultAsString = "" as String 

    def commandToRun = "grep -lH $userId $Path/*.xml | xargs grep -l '$eventTypeToLookFor' | cut -d: -f1" 
    def antEventCheck = new AntBuilder(); ********** Error line ****************** 


     antEventCheck.sshexec( trust:'true', 
       host:Host, 
       username:UserName, 
       password:Password, 
       command:commandToRun, 
       verbose:'true', 
       timeout:'10000', 
       failonerror:'false', 
       outputproperty:'eventCheckResult'); 

     resultAsString = antEventCheck.properties.eventCheckResult.toString() 

    return resultAsString 
} 

的build.gradle

dependencies { 
    ext.groovyVersion = "2.0.4" 
    ext.cucumberJvmVersion = "1.1.5" 
    ext.httpclientVersion = "4.2.1" 

    cucumberRuntime files("${jar.archivePath}") 

    compile ('com.jcraft:jsch:0.1.49') 

    compile('com.github.groovy-wslite:groovy-wslite:0.8.0') 
    groovy("org.codehaus.groovy:groovy-all:${groovyVersion}") 
    compile("org.apache.httpcomponents:httpmime:4.1.2") 
    compile("org.codehaus.groovy.modules.http-builder:http-builder:0.5.2") { 
     exclude group: "org.codehaus.groovy", module: "groovy" 
    } 
    compile("net.sf.json-lib:json-lib:2.4:jdk15") 
    compile("javax.mail:mail:1.4.5") 
    compile("org.apache.httpcomponents:httpclient:${httpclientVersion}") 
    compile("org.codehaus.geb:geb-core:0.7.2") { 
     exclude group: "org.codehaus.geb", module: "geb-implicit-assertions" 
    } 

    drivers.each { driver -> 
     testCompile "org.seleniumhq.selenium:selenium-$driver-driver:$version.selenium" 
    } 

    compile("org.seleniumhq.selenium:selenium-support:2.25.0") 
    compile("log4j:log4j:1.2.17") 

    testCompile("junit:junit:4.10") 
    testCompile("info.cukes:cucumber-groovy:${cucumberJvmVersion}") 
    testCompile("info.cukes:cucumber-junit:${cucumberJvmVersion}") 
} 

感谢您的意见

+0

什么的'dependencies'块?在那里声明了Ant依赖关系吗? – 2014-10-06 23:55:10

+0

@PeterNiederwieser我没有把任何东西放在'dependencies'下。刚刚添加在'repositories'下的'build.gradle'文件中,就像我在'http://stackoverflow.com/questions/20700053/how-to-add-local-jar-file-dependency-to -build-gradle-file'我可以在这里看到我的项目'lib'下的类文件'ant-1.7.0.jar - > \ org \ apache \ tools \ ant \ BuildException.class' – SMPH 2014-10-07 00:06:37

+0

'部分'build.gradle'文件的问题 – SMPH 2014-10-07 02:49:56

回答

1

以下工作完美

正如彼得的回答将flatDir不是要去足够的规定。需要同样添加到依赖以及

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


dependencies { 
    compile("ant:ant:1.7.0") 
} 

感谢彼得