Jak mogę powiedzieć Maven 2, aby załadowała API Servlet 3.0?
Próbowałem:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Używam http://repository.jboss.com/maven2/, ale jakie repozytorium byłoby poprawne?
Uzupełnienie:
Działa w zależności od całego interfejsu API Java EE 6 i następujących ustawień:
<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>
Wolę dodawać tylko interfejs API serwletów jako zależność, ale „Brabster” może mieć rację, że oddzielne zależności zostały zastąpione profilami Java EE 6. Czy istnieje źródło, które potwierdza to założenie?
java
maven-2
servlets
jakarta-ee
deamon
źródło
źródło
servlet-api
najavax.servlet-api
. Straciłem pół godziny „debugowania” ...: /Odpowiedzi:
Szczerze mówiąc, nie jestem pewien, dlaczego rozumiem, ale nieważne ...
Repozytorium maven z Java.net rzeczywiście oferuje następujący artefakt dla WebProfile:
Ten słoik obejmuje 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.
Ale o ile wiem, nic nie pozwala powiedzieć, że te interfejsy API nie będą dystrybuowane osobno (w repozytorium java.net lub gdzie indziej). Na przykład (ok, może to być konkretny przypadek), interfejs API JSF 2.0 jest dostępny osobno (w repozytorium java.net):
I rzeczywiście, można uzyskać
javax.servlet-3.0.jar
od tam i zainstalować go w swoim własnym repozytorium.źródło
javaee-web-api
zawiera tylko kody pośredniczące metod (bez kodu bajtowego). Nie można korzystać z tej zależności pozaprovided
zakresem, dlatego wolę sugestię Sa'ada.<version>7.0</version>
Wydaje się, że zostało to ostatnio dodane:
http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
źródło
servlet-api
? Bo fajnie jest dodawać<excludes>
stary artefakt (aby uniknąć pobierania zarówno starego, jak i nowego apletu apletu na ścieżkę klasy, jeśli jedna z zależności nadal zależy od starej)? :)javax.servlet-api-3.1.0
. Tylko upewnij się, że Twój kontener serwletów obsługuje tę wersję. Na przykład wersja 8 Tomcat obsługuje 3.1 .Lub możesz użyć Central Maven Repository z API Servlet 3.0, który jest również dostępny dla Tomcat Server 7.0.X
stąd: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
źródło
Oto czego używam. Wszystkie są w centralnej i mają źródła.
Dla Tomcat 7 (Java 7, Servlet 3.0)
Uwaga - interfejsy API serwletów, JSP i EL są dostępne w Tomcat. Tylko aplikacja JSTL (jeśli jest używana) musi być dołączona do aplikacji internetowej.
Dla Tomcat 8 (Java 8, Servlet 3.1)
źródło
Niestety dodanie javaee- (web) -api jako zależności nie daje Javadoc ani źródła do apletu Servlet do przeglądania ich z poziomu IDE. Dotyczy to również wszystkich innych zależności (JPA, EJB, ...) Jeśli potrzebujesz źródeł Servlet API / javadoc, możesz dodać następujące pliki do pliku pom.xml (działa przynajmniej dla JBoss i Glassfish):
Magazyn:
Zależność:
Całkowicie usunąłem javaee-api z moich zależności i zastąpiłem go dyskretnymi częściami (javax.ejb, javax.faces, ...), aby uzyskać źródła i Javadocs dla wszystkich części Java EE 6.
EDYTOWAĆ:
Oto równoważna zależność Glassfish (chociaż obie zależności powinny działać, bez względu na to, jakiego serwera używasz).
źródło
1.0.0.Beta2
, jeśli jest to wersja3.0
, której potrzebujemy? To czyni to złożonym.Projekt Apache Geronimo zapewnia zależność API Servlet 3.0 od repozytorium Maven Central:
źródło
Tylko dla nowo przybyłych.
źródło
Znalazłem przykład POM dla API Servlet 3.0 na DZone od września.
Zaproponuj użycie repozytorium java.net, pod adresem adresem http://download.java.net/maven/2/
Są tam interfejsy API Java EE, na przykład http://download.java.net/maven/2/javax/javaee-web-api/6.0/ z POM, które wyglądają na to, że mogą być tym, czego szukasz, na przykład :
Zgaduję, że konwencje wersji dla interfejsów API zostały zmienione, aby pasowały do wersji ogólnej specyfikacji EE (tj. Java EE 6 vs. Servlety 3.0) w ramach nowych „profili”. Patrząc na JAR, wygląda na to, że są tam wszystkie elementy serwletu 3.0. Cieszyć się!
źródło
Wygodny sposób (zalecany JBoss) włączenia zależności Java EE 6 pokazano poniżej. W wyniku tego zależności są umieszczane osobno (nie wszystkie w jednym słoiku, jak w javaee-web-api), pliki źródłowe i javadocs bibliotek są dostępne do pobrania z repozytorium maven.
Aby uwzględnić tylko indywidualne zależności, można użyć
dependencyManagement
sekcji i zakresuimport
:źródło
Wypróbuj ten kod ...
źródło