Cum pot spune Maven 2 pentru a încărca Servlet 3.0 API?
Am incercat:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Eu folosesc http://repository.jboss.com/maven2/ dar ce repository ar fi corect?
Addendum:
Acesta funcționează cu o dependență pentru întreaga Java EE 6 API și următoarele setări:
<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>
Am'd preferă să adăugați numai Servlet API fel de dependență, dar "Brabster" poate fi chiar separate de dependențe au fost înlocuite cu Java EE 6 Profiluri. Există o sursă care confirmă această ipoteză?
Acest lucru pare a fi adăugate recent:
http://repo1.maven.org/maven2/javax/servlet/javax.servlet-api/3.0.1/
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
nu'd preferă să adăugați numai Servlet API fel de dependență,
Pentru a fi sincer, am'm nu este sigur pentru a înțelege de ce, dar nu conteaza...
Brabster separate dependențe au fost înlocuite cu Java EE 6 Profiluri. Există o sursă care confirmă această ipoteză?
Maven depozit de Java.net într-adevăr oferă următoarele artefact pentru WebProfile:
<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>
Acest borcan include 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.
Dar din cunostintele mele, nimic nu permite să spun că aceste Api-uri a câștigat't fi distribuite separat (în java.net depozit sau în altă parte). De exemplu (ok, poate un caz particular), în JSF 2.0 API este disponibil separat (în java.net repository):
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.0-b10</version>
<scope>provided</scope>
</dependency>
Și, de fapt, ar putea javax.servlet-3.0.jar de acolo și instalați-l în propriul depozit.
Sau puteți folosi Central Maven Depozit cu Servlet 3.0 API, care este, de asemenea, furnizate pentru Tomcat Server 7.0.X
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.21</version>
<scope>provided</scope>
</dependency>
de aici: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
Din păcate, adăugând javaee-(web)-api ca o dependență, nu't oferi Javadoc sau Sursa de Servlet Api pentru a le parcurge din cadrul IDE. Acest lucru este valabil pentru toate celelalte dependențe (JPA, EJB, ...) Dacă ai nevoie de Servlet API surse/javadoc, puteți adăuga următoarele tău pom.xml (funcționează cel puțin pentru JBoss&Glassfish):
Depozit:
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
Dependența:
<!-- 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>
Am eliminat complet javaee-api din dependențe și a înlocuit-o cu părți distincte (javax.ejb, javax.chipurile, ...) pentru a obține surse și Javadocs pentru toate piese de Java EE 6.
EDIT:
Aici e echivalent cu Glassfish dependență (deși ambele dependențe ar trebui să funcționeze, indiferent de ceea ce appserver utilizați).
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Aici este ceea ce am folosi. Toate acestea sunt în europa Centrală și de surse.
Pentru Tomcat 7 (Java 7, Servlet 3.0)
Notă - Servlet, JSP și EL Api-uri sunt furnizate în Tomcat. Numai JSTL (dacă este cazul) trebuie să fie la pachet cu aplicația web.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Pentru Tomcat 8 (Java 8, Servlet 3.1)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Apache Geronimo proiect oferă un Servlet 3.0 API dependență pe Maven Central repo:
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
<version>1.0</version>
</dependency>
Am găsit un exemplu POM pentru Servlet 3.0 API pe DZone din septembrie.
Sugerez să utilizați java.net repo, la http://download.java.net/maven/2/
Există Api-uri Java EE acolo, de exemplu http://download.java.net/maven/2/javax/javaee-web-api/6.0/ cu POM care arata ca acestea ar putea fi ceea ce ai're după, de exemplu:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
Am'm ghicitul că versiunea convenții pentru Api-uri au fost modificate pentru a se potrivi versiunea de ansamblu EE spec (de exemplu, Java EE 6 vs servlet-uri 3.0), ca parte a noului 'profile'. Căutarea în BORCAN, se pare ca toate servlet 3.0 lucrurile acolo. Bucurați-vă de!
Un mod convenabil (JBoss recomandat) pentru a include Java EE 6 dependențe este demonstrat mai jos. Ca urmare dependențele sunt plasate separat (nu toate într-un borcan ca in javaee-web-api), fișierele sursă și javadocs de biblioteci sunt disponibile pentru descărcare de la maven depozit.
<properties>
<jboss.javaee6.spec.version>2.0.0.Final</jboss.javaee6.spec.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-web-6.0</artifactId>
<version>${jboss.javaee6.spec.version}</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
</dependencies>
Pentru a include individuale dependențe numai, `dependencyManagement "din secțiunea" și domeniul de aplicare "import" poate fi folosit:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee6-specs-bom</artifactId>
<version>${jboss.javaee6.spec.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- No need specifying version and scope. It is defaulted to version and scope from Bill of Materials (bom) imported pom. -->
<dependency>
<groupId>org.jboss.spec.javax.servlet</groupId>
<artifactId>jboss-servlet-api_3.0_spec</artifactId>
</dependency>
</dependencies>