JavaMail API from Maven
Question
I am trying to upgrade to latest Java Mail utility.
From
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
to (my Intention)
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.1</version>
</dependency>
But I don't find 1.5.1 for mail artifact,
but I can see
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.1</version>
</dependency>
My Question is why group id changed and if I change the group id for 1.5.1 do I need to change all my mail implementation that is already present (package name change and any other stuff) and what is the difference between com.sun.mail
vs javax.mail
?
Solution
The Maven coordinates changed some time ago to be compatible with the scheme described here. The new coordinates are here.
In short:
- The groupId
javax.mail
is no longer used for the implementation. - There is a new artifact at
javax.mail:javax.mail-api
. It provides thejavax.mail-api.jar
file. This contains the JavaMail API definitions only, suitable for compiling against. com.sun.mail:javax.mail
contains thejavax.mail.jar
file, the JavaMail reference implementation jar file, including the SMTP, IMAP, and POP3 protocol providers.
So, you should either use com.sun.mail:javax.mail
for compilation and packaging/deploy, or use javax.mail:javax.mail-api
for compilation and then deploy the com.sun.mail:javax.mail
jar where appropriate (e.g., your Tomcat lib).