Maven 2'ye Servlet 3.0 API'sini yüklemesini nasıl söyleyebilirim?
Denedim:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
http://repository.jboss.com/maven2/ kullanıyorum ama hangi depo doğru olur?
Ek:
Java EE 6 API'sinin tamamı için bir bağımlılık ve aşağıdaki ayarlarla çalışır:
<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>
Sadece Servlet API'yi bağımlılık olarak eklemeyi tercih ederdim, ancak "Brabster" ayrı bağımlılıkların Java EE 6 Profilleri ile değiştirildiği konusunda haklı olabilir. Bu varsayımı doğrulayan bir kaynak var mı?
Bağımlılık olarak yalnızca Servlet API'yi eklemeyi tercih ederim,
Dürüst olmak gerekirse, nedenini anladığımdan emin değilim ama neyse...
Brabster ayrı bağımlılıklar Java EE 6 Profilleri ile değiştirildi. Bu varsayımı doğrulayan bir kaynak var mı?
Java.net'in maven deposu gerçekten de WebProfile için aşağıdaki yapıyı sunmaktadır:
<repositories>
<repository>
<id>java.net2</id>
<name>Repository hosting the jee6 artifacts</name>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Bu kavanoz 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 içerir.
Ancak bildiğim kadarıyla, hiçbir şey bu API'lerin ayrı olarak (java.net deposunda veya başka bir yerde) dağıtılmayacağını söylemeye izin vermiyor. Örneğin (tamam, bu özel bir durum olabilir), JSF 2.0 API'si ayrı olarak (java.net deposunda) mevcuttur:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.0-b10</version>
<scope>provided</scope>
</dependency>
Ve aslında, javax.servlet-3.0.jar
ı oradan alabilir ve kendi deponuza yükleyebilirsiniz.
Ne yazık ki, javaee-(web)-api'yi bir bağımlılık olarak eklemek, IDE içinden göz atmak için size Javadoc veya Servlet Api Kaynağı vermez. Bu durum diğer tüm bağımlılıklar için de geçerlidir (JPA, EJB, ...) Servlet API kaynaklarına/javadoc'a ihtiyacınız varsa, pom.xml'inize aşağıdakileri ekleyebilirsiniz (en azından JBoss&Glassfish için çalışır):
Depo:
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
Bağımlılık:
<!-- Servlet 3.0 Api Specification -->
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
<version>1.0.0.Beta2</version>
<scope>provided</scope>
</dependency>
Java EE 6'nın tüm parçalarının kaynaklarını ve Javadoc'larını almak için javaee-api'yi bağımlılıklarımdan tamamen kaldırdım ve ayrı parçalarla (javax.ejb, javax.faces, ...) değiştirdim.
EDIT:
İşte eşdeğer Glassfish bağımlılığı (hangi uygulama sunucusunu kullanırsanız kullanın her iki bağımlılık da çalışmalıdır).
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Eylül ayından Servlet 3.0 API on DZone için örnek bir POM buldum.
http://download.java.net/maven/2/ adresindeki java.net deposunu kullanmanızı öneririz
Orada Java EE API'leri var, örneğin POM ile http://download.java.net/maven/2/javax/javaee-web-api/6.0/ sizin peşinde olduğunuz şey olabilir gibi görünüyor:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
Sanırım API'lerin sürüm kuralları, yeni 'profillerin' bir parçası olarak genel EE spesifikasyonunun sürümüyle (yani Java EE 6 ve Servlets 3.0) eşleşecek şekilde değiştirildi. JAR'a baktığımda, tüm 3.0 servlet öğelerinin orada olduğunu görüyorum. İyi eğlenceler!