2014-02-25 12 views
33

Ich versuche, auf das neueste Java Mail-Dienstprogramm zu aktualisieren.JavaMail-API von Maven

Von

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

zu (meine Intention)

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

Aber ich 1.5.1 für Mail-Artefakt nicht finden,

aber ich kann sehen

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

Meine Frage ist warum Gruppen-ID c gehängt und wenn ich die Gruppen-ID für 1.5.1 ändern muss ich alle meine Mail-Implementierung ändern, die bereits vorhanden ist (Paketname ändern und andere Sachen) und was ist der Unterschied zwischen com.sun.mail vs javax.mail?

Antwort

61

Die Maven-Koordinaten wurden vor einiger Zeit geändert, um mit dem beschriebenen Schema here kompatibel zu sein. Die neuen Koordinaten sind here.

Kurz:

  • Die groupId javax.mail wird nicht mehr für die Umsetzung verwendet.
  • Es gibt ein neues Artefakt bei javax.mail:javax.mail-api. Es stellt die Datei javax.mail-api.jar zur Verfügung. Diese enthält nur die JavaMail-API-Definitionen, die zum Kompilieren geeignet sind.
  • com.sun.mail:javax.mail enthält die Datei javax.mail.jar, die JavaMail-Referenzimplementierungs-JAR-Datei, einschließlich der SMTP-, IMAP- und POP3-Protokollanbieter.

Also, sollten Sie entweder com.sun.mail:javax.mail für die Kompilierung und Verpackung/deploy oder javax.mail:javax.mail-api für die Kompilierung verwenden und dann stellen Sie die com.sun.mail:javax.mail Glas gegebenenfalls (zum Beispiel Tomcat lib).

+1

Wenn Sie dem [Link oben] folgen (https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release), werden Sie sehen, dass die javax.mail groupId nur eine artifactId - javax hat .mail-api, aber dieses Artefakt ist nur gut zum Kompilieren Ihrer Programme, es ist nicht gut zum Ausführen Ihrer Programme. Wenn Sie Ihre Programme ausführen möchten, benötigen Sie die Gruppen-ID com.sun.mail mit artifactId javax.mail. –

+0

So gut! Ich suchte nach der Implementierung, aber google und maven würden mich nur auf javax.mail apis ... –

+0

In diesem Link sagen es tatsächlich so, aber wenn Sie in Google suchen (für mich war es das erste Suchergebnis), können Sie auch finde das: https://mvnrepository.com/artifact/javax.mail/mail/1.4 und du zeigst es auf javaxmail/mail artefakt, was in der Tat auch funktioniert. – Line