Gradle でメールを送ってみる

Gradle でメールを送ろうとしたら クラスパス関係ではまってしまったのでメモしておこう。

どうやら、ant.mail を使うためには EmailTask (Ant のライブラリ) を読み込んだクラスローダに直接 JavaMail 関係のライブラリを追加するしかないっぽい。
クラスローダに直接 JAR ファイルを追加できるのも Gradle(Groovy) の良いところでもあるのだが、メールでちょっと通知するだけなのに こんなに書かないといけなのも なんだかなぁ...
早く標準でサポートしてほしいなぁ...

import org.apache.tools.ant.taskdefs.email.EmailTask

configurations {
    sendmail
}

repositories {
    mavenCentral()
}

dependencies {
    sendmail 'javax.mail:mail:1.4.4'
    sendmail 'org.apache.ant:ant-javamail:1.8.2'
}

task mail << {

    configurations.sendmail.each { f -> EmailTask.class.classLoader.addURL(f.toURI().toURL()) }

    ant {
        mail(mailhost: "smtp.server.name",
             mailport: 25,
              subject: "テスト",
              message: "こんにちは、Gradle!!",
              charset: "ISO-2022-JP") {

            from(address: "bluepapa32@gmail.com")
              to(address: "somebody@gmail.com")
        }
    }
}