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

Reply via email to