問題です。MavenでJavaMailの依存性を定義する場合、以下3つのどれが正しいでしょうか?
1
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>
2
<dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.4.7</version></dependency>
3
<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になった理由はちょっとよくわかりませんでした。もう少し調べないと…。