unit testing - Any alternative to @GrabConfig? -
i'm using javax.mail library send emails may or may not contain attachments.
i'm using groovy 2.0.6 writing script , developing in eclipse , running unit tests using gradle 1.5. script i'm writing deployed in jar many different locations in future. therefore, javax.mail needs referenced script , not manually added machine's classpath.
to this, using following statements in script:
@grabconfig(systemclassloader=true) @grab(group='javax.mail', module='mail', version='1.4.7')
my issue unable run unit tests gradle while @grabconfig statement included. runs fine @grab statement fails when @grabconfig in there. error message i'm receiving is:
:compilejava up-to-date :compilegroovy startup failed: general error during conversion: no suitable classloader found grab java.lang.runtimeexception: no suitable classloader found grab @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:39) @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:27) @ java.lang.reflect.constructor.newinstance(constructor.java:513) @ org.codehaus.groovy.reflection.cachedconstructor.invoke(cachedconstructor.java:77) @ org.codehaus.groovy.runtime.callsite.constructorsite$constructorsitenounwrapnocoerce.callconstructor(constructorsite.java:102) @ org.codehaus.groovy.runtime.callsite.callsitearray.defaultcallconstructor(callsitearray.java:57) @ org.codehaus.groovy.runtime.callsite.abstractcallsite.callconstructor(abstractcallsite.java:182) @ org.codehaus.groovy.runtime.callsite.abstractcallsite.callconstructor(abstractcallsite.java:190) @ groovy.grape.grapeivy.chooseclassloader(grapeivy.groovy:181) @ groovy.grape.grapeivy$chooseclassloader.callcurrent(unknown source) @ groovy.grape.grapeivy.grab(grapeivy.groovy:247) @ groovy.grape.grape.grab(grape.java:141) @ groovy.grape.grabannotationtransformation.visit(grabannotationtransformation.java:312) @ org.codehaus.groovy.transform.asttransformationvisitor$3.call(asttransformationvisitor.java:319) @ org.codehaus.groovy.control.compilationunit.applytosourceunits(compilationunit.java:903) @ org.codehaus.groovy.control.compilationunit.dophaseoperation(compilationunit.java:566) @ org.codehaus.groovy.control.compilationunit.processphaseoperations(compilationunit.java:542) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:519) @ org.codehaus.groovy.control.compilationunit.compile(compilationunit.java:498) @ org.gradle.api.internal.tasks.compile.apigroovycompiler.execute(apigroovycompiler.java:118) @ org.gradle.api.internal.tasks.compile.apigroovycompiler.execute(apigroovycompiler.java:39) @ org.gradle.api.internal.tasks.compile.daemon.compilerdaemonserver.execute(compilerdaemonserver.java:52) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.gradle.messaging.dispatch.reflectiondispatch.dispatch(reflectiondispatch.java:35) @ org.gradle.messaging.dispatch.reflectiondispatch.dispatch(reflectiondispatch.java:24) @ org.gradle.messaging.remote.internal.hub.messagehub$handler.run(messagehub.java:355) @ org.gradle.internal.concurrent.defaultexecutorfactory$stoppableexecutorimpl$1.run(defaultexecutorfactory.java:66) @ java.util.concurrent.threadpoolexecutor$worker.runtask(threadpoolexecutor.java:886) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:908) @ java.lang.thread.run(thread.java:662) 1 error :compilegroovy failed failure: build failed exception.
according no suitable classloader found grab , @grabconfig makes code untestable.
is there alternative @grabconfig situation?
you can use gradle-one-jar plugin package own , third-party code single executable jar. alternatively, can use gradle's application
plugin create zip distribution start scripts.
Comments
Post a Comment