Wie kann ich Maven 2 anweisen, die Servlet 3.0-API zu laden?
Ich habe es versucht:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Ich verwende http://repository.jboss.com/maven2/, aber welches Repository wäre korrekt?
Nachtrag:
Es funktioniert mit einer Abhängigkeit für die gesamte Java EE 6-API und den folgenden Einstellungen:
<repository>
<id>java.net</id>
<url>http://download.java.net/maven/2</url>
</repository>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Ich würde es vorziehen, nur die Servlet-API als Abhängigkeit hinzuzufügen, aber "Brabster" hat möglicherweise Recht, dass separate Abhängigkeiten durch Java EE 6-Profile ersetzt wurden. Gibt es eine Quelle, die diese Annahme bestätigt?
java
maven-2
servlets
jakarta-ee
Deamon
quelle
quelle
servlet-api
in geändertjavax.servlet-api
. Verlor eine halbe Stunde "Debugging" ...: /Antworten:
Um ehrlich zu sein, ich bin mir nicht sicher warum, aber egal ...
Das Maven-Repository von Java.net bietet tatsächlich das folgende Artefakt für das WebProfile:
Dieses Glas enthält Servlet 3.0, EJB Lite 3.1, JPA 2.0, JSP 2.2, EL 1.2, JSTL 1.2, JSF 2.0, JTA 1.1, JSR-45, JSR-250.
Meines Wissens kann jedoch nichts darüber aussagen, dass diese APIs nicht separat verteilt werden (im java.net-Repository oder anderswo). Zum Beispiel (ok, es kann ein besonderer Fall sein) ist die JSF 2.0-API separat verfügbar (im java.net-Repository):
Und tatsächlich könnten Sie
javax.servlet-3.0.jar
von dort kommen und es in Ihrem eigenen Repository installieren.quelle
javaee-web-api
nur Methodenstubs (kein Bytecode) enthalten sind. Sie können diese Abhängigkeit nicht außerhalb desprovided
Geltungsbereichs verwenden, weshalb ich den Vorschlag von Sa'ad bevorzuge.<version>7.0</version>
Dies scheint vor kurzem hinzugefügt worden zu sein:
http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
quelle
servlet-api
? Weil es Spaß macht,<excludes>
die alte Artefakt -ID hinzuzufügen (um zu verhindern, dass sowohl die alte als auch die neue Servlet-API in Ihren Klassenpfad aufgenommen werden, wenn eine Ihrer Abhängigkeiten immer noch von der alten abhängt)? :)javax.servlet-api-3.1.0
. Stellen Sie nur sicher, dass Ihr Servlet-Container diese Version verarbeiten kann. Zum Beispiel kann Version 8 von Tomcat 3.1 verarbeiten .Sie können auch das Central Maven Repository mit der Servlet 3.0-API verwenden, die auch für Tomcat Server 7.0.X bereitgestellt wird
von hier: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
quelle
Hier ist was ich benutze. Alle diese sind in der Zentrale und haben Quellen.
Für Tomcat 7 (Java 7, Servlet 3.0)
Hinweis - Servlet-, JSP- und EL-APIs werden in Tomcat bereitgestellt. Nur JSTL (falls verwendet) muss mit der Web-App gebündelt werden.
Für Tomcat 8 (Java 8, Servlet 3.1)
quelle
Wenn Sie das Javaee- (Web-) API als Abhängigkeit hinzufügen, erhalten Sie leider nicht das Javadoc oder die Quelle zur Servlet-API, um sie in der IDE zu durchsuchen. Dies gilt auch für alle anderen Abhängigkeiten (JPA, EJB, ...). Wenn Sie die Servlet-API-Quellen / javadoc benötigen, können Sie Ihrer pom.xml Folgendes hinzufügen (funktioniert zumindest für JBoss & Glassfish):
Repository:
Abhängigkeit:
Ich habe die Javaee-API vollständig aus meinen Abhängigkeiten entfernt und durch die diskreten Teile (javax.ejb, javax.faces, ...) ersetzt, um die Quellen und Javadocs für alle Teile von Java EE 6 abzurufen.
BEARBEITEN:
Hier ist die entsprechende Glassfish-Abhängigkeit (obwohl beide Abhängigkeiten funktionieren sollten, unabhängig davon, welchen Appserver Sie verwenden).
quelle
1.0.0.Beta2
, wenn3.0
wir diese Version benötigen? Das macht es komplex.Das Apache Geronimo-Projekt bietet eine Servlet 3.0-API-Abhängigkeit vom Maven Central-Repo:
quelle
Nur für Neulinge.
quelle
Ich habe ab September ein Beispiel-POM für die Servlet 3.0-API auf DZone gefunden .
Schlagen Sie vor, das Repo java.net unter http://download.java.net/maven/2/ zu verwenden.
Es gibt dort Java EE-APIs, zum Beispiel http://download.java.net/maven/2/javax/javaee-web-api/6.0/ mit POM, die so aussehen, als wären sie das, wonach Sie suchen ::
Ich vermute, dass die Versionskonventionen für die APIs geändert wurden, um der Version der gesamten EE-Spezifikation (dh Java EE 6 vs. Servlets 3.0) als Teil der neuen 'Profile' zu entsprechen. Wenn man in die JAR schaut, sieht es so aus, als ob das ganze 3.0-Servlet-Zeug da drin ist. Genießen!
quelle
Eine bequeme Möglichkeit (JBoss empfohlen), Java EE 6-Abhängigkeiten einzuschließen, wird unten gezeigt. Infolgedessen werden Abhängigkeiten separat platziert (nicht alle in einem Glas wie in javaee-web-api), Quelldateien und Javadocs der Bibliotheken können aus dem Maven-Repository heruntergeladen werden.
Um nur einzelne Abhängigkeiten einzuschließen, können
dependencyManagement
Abschnitt und Bereichimport
verwendet werden:quelle
Versuchen Sie diesen Code ...
quelle