Optional ant tasks are still a bit awkward. You might do something like this:
repositories {
mavenCentral()
}
configurations {
mail
}
dependencies {
mail 'org.apache.ant:ant-javamail:1.8.1'
}
task email {
doLast {
configurations.mail.each {
org.apache.tools.ant.Project.class.classLoader.addURL(it.toURI().toURL())
}
ant.mail(...)
}
}
The only important piece is this:
someClasspath.each {
org.apache.tools.ant.Project.class.classLoader.addURL(it.toURI().toURL())
}
In the example above, I just happened to use a configuration to fetch the jars
from the maven central repository. You can build the classpath however you like
- it's just a set of File objects.
On 19/01/2011, at 12:56 PM, Sean Van Buggenum wrote:
> Sure;
>
> Here below is both the run using the straight ant style setup that I
> tested on my own ( doEMail )
> and the run using an adaption of what Rene showed me (doMail)
> in that order.
>
> D:\dev>cd scripts
>
> D:\dev\scripts>gradle -s doEMail
> do it then!
> do it now!
> :doEMail
> in the do email task
> [ant:email] Failed to send email: javax.mail.internet.MimeMessage
>
> FAILURE: Build failed with an exception.
>
> * Where:
> Build file 'D:\dev\scripts\build.gradle' line: 103
>
> * What went wrong:
> Execution failed for task ':doEMail'.
> Cause: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
>
> * Try:
> Run with -d option to get more details. Run with -S option to get the
> full (very verbose) stacktrace.
>
> * Exception is:
> org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
> 'D:\dev\scripts\build.gradle' line: 103
> Execution failed for task ':doEMail'.
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:66)
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)
> at
> org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
> at
> org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
> at
> org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
> at
> org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
> at
> org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
> at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
> at
> org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
> at
> org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
> at
> org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
> at
> org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
> at
> org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
> at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
> at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
> at
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:209)
> at
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:193)
> at org.gradle.launcher.Main.execute(Main.java:55)
> at org.gradle.launcher.Main.main(Main.java:40)
> at
> org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
> at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
> at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
> Caused by: : java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
> at
> org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:586)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
> at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
> at
> org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:71)
> at
> org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(BasicAntBuilder.java:86)
> at
> org.gradle.api.internal.project.DefaultAntBuilder.super$3$invokeMethod(DefaultAntBuilder.groovy)
> at
> org.gradle.api.internal.project.DefaultAntBuilder.invokeMethod(DefaultAntBuilder.groovy:37)
> at
> build_gradle_1467b47dd8b3e85829e88798cc56eeb0$_run_closure6.doCall(D:\dev\scripts\build.gradle:103)
> at
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:445)
> at
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:432)
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:58)
> ... 24 more
> Caused by: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
> at
> org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:452)
> ... 34 more
>
>
> BUILD FAILED
>
> Total time: 8.069 secs
>
> D:\dev\scripts>gradle -s doMail
> do it then!
> do it now!
> :doMail
> in the domail task
> [ant:mail] Failed to send email: javax.mail.internet.MimeMessage
>
> FAILURE: Build failed with an exception.
>
> * Where:
> Build file 'D:\dev\scripts\build.gradle' line: 76
>
> * What went wrong:
> Execution failed for task ':doMail'.
> Cause: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
>
> * Try:
> Run with -d option to get more details. Run with -S option to get the
> full (very verbose) stacktrace.
>
> * Exception is:
> org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
> 'D:\dev\scripts\build.gradle' line: 76
> Execution failed for task ':doMail'.
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:66)
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)
> at
> org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
> at
> org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
> at
> org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
> at
> org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
> at
> org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
> at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
> at
> org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
> at
> org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
> at
> org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
> at
> org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
> at
> org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
> at
> org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
> at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
> at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
> at
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:209)
> at
> org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:193)
> at org.gradle.launcher.Main.execute(Main.java:55)
> at org.gradle.launcher.Main.main(Main.java:40)
> at
> org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
> at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
> at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
> Caused by: : java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
> at
> org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:586)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
> at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
> at
> org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:71)
> at
> org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(BasicAntBuilder.java:86)
> at
> org.gradle.api.internal.project.DefaultAntBuilder.super$3$invokeMethod(DefaultAntBuilder.groovy)
> at
> org.gradle.api.internal.project.DefaultAntBuilder.invokeMethod(DefaultAntBuilder.groovy:37)
> at
> build_gradle_1467b47dd8b3e85829e88798cc56eeb0$_run_closure5_closure20.doCall(D:\dev\scripts\build.gradle:76)
> at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:61)
> at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:31)
> at
> org.gradle.api.internal.project.AbstractProject.ant(AbstractProject.java:877)
> at
> org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:158)
> at
> org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:93)
> at
> org.gradle.api.internal.project.DefaultProject_Decorated.invokeMethod(Unknown
> Source)
> at
> org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.groovy:68)
> at
> build_gradle_1467b47dd8b3e85829e88798cc56eeb0$_run_closure5.doCall(D:\dev\scripts\build.gradle:71)
> at
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:445)
> at
> org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:432)
> at
> org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:58)
> ... 24 more
> Caused by: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
> at
> org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:452)
> ... 42 more
>
>
> BUILD FAILED
>
> Total time: 4.036 secs
>
> D:\dev\scripts>
>
>
>
>
>
>
> On 19 January 2011 12:33, Adam Murdoch <[email protected]> wrote:
>>
>> On 19/01/2011, at 12:26 PM, Sean Van Buggenum wrote:
>>
>> Not really making much progress:
>>
>> the task I want to use is in the ant-1.8.1.jar file that is available
>> in the lib folder of GRADLE_HOME.
>> It is called 'EmailTask' and resides at:
>> org.apache.tools.ant.taskdefs.email.EmailTask
>>
>> Its dependencies are found in the jar files I have:
>>
>> mail.jar
>> activation.jar
>> and maybe
>> java-mail.jar, which comes with the ant installation.
>>
>> I still get the same exception no matter how I do this:
>>
>> java.lang.ClassNotFoundException.
>> Execution failed for task ':doEMail'.
>> Cause: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage
>>
>> Can you run with -s, and send in the stack trace for this exception?
>>
>> --
>> Adam Murdoch
>> Gradle Developer
>> http://www.gradle.org
>> CTO, Gradle Inc. - Gradle Training, Support, Consulting
>> http://www.gradle.biz
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
--
Adam Murdoch
Gradle Developer
http://www.gradle.org
CTO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz