Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

JavaMailのdependencyはどれが正しいのか?

問題です。MavenでJavaMailの依存性を定義する場合、以下3つのどれが正しいでしょうか?

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.4.7</version>
</dependency>

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.4.7</version>
</dependency>

答えはどれも正解です。

もちろん違いはあって

1はもう使わない。
2はjavax.mail.jarが含まれません。そのため、2の定義だけで実行すると com.sun.mail.util.MailLoggerが見つからずjava.lang.ClassNotFoundExceptionが発生します。
3はjavax.mail.jarを含むので一番堅実な定義です。

なお、2018/3/6現在ではJavaMail 1.6.1が最新なので

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.1</version>
</dependency>

が良さそうです。

1,2,3の違いについてはJavaMailのスペックリード(をされていた?の過去形になってしまうのかな?)のBill Shannonさん自らがStackOverflowで回答&解説されてます。
stackoverflow.com

が、1が2になった理由はちょっとよくわかりませんでした。もう少し調べないと…。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村