2014-02-25 34 views
33

我正在嘗試升級到最新的Java Mail實用程序。來自Maven的JavaMail API

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

到(我的意圖)

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

但我不覺得1.5.1郵件神器,

但我可以看到

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

我的問題是爲什麼group id c掛起,如果我改變了1.5.1的組ID,我是否需要更改所有已存在的郵件實現(包名稱更改和其他任何東西),com.sun.mailjavax.mail之間有什麼區別?

回答

61

前一段時間Maven座標改變爲與here描述的方案兼容。新座標是here

簡而言之:

  • 的的groupId javax.mail不再用於實施。
  • javax.mail:javax.mail-api有一個新的神器。它提供了javax.mail-api.jar文件。這僅包含適用於編譯的JavaMail API定義。
  • com.sun.mail:javax.mail包含javax.mail.jar文件,即JavaMail參考實現jar文件,包括SMTP,IMAP和POP3協議提供程序。

所以,你應該要麼使用com.sun.mail:javax.mail編譯和打包/部署,或使用javax.mail:javax.mail-api編譯,然後部署com.sun.mail:javax.mail罐子在適當情況下(例如,您的Tomcat的lib)。

+1

如果你按照[上面的鏈接](https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release),你會發現javax.mail groupId只有一個artifactId - javax .mail-api,但該工件僅適用於編譯程序,不適合運行程序。如果你想運行你的程序,你需要帶有artifactId javax.mail的com.sun.mail groupId。 –

+0

太好了!我正在尋找實施,但谷歌和Maven只會指向我的javax.mail apis ... –

+0

在這個鏈接它的確如此說,但如果你在谷歌搜索(對我來說這是第一個搜索結果),你也可以找到這個:https://mvnrepository.com/artifact/javax.mail/mail/1.4,你指向它的javaxmail /郵件工件,這實際上也可以工作。 – Line