Bagaimana saya dapat memberitahu Maven 2 untuk memuat Servlet 3.0 API?
Saya mencoba:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Saya menggunakan http://repository.jboss.com/maven2/ tapi apa yang repositori akan benar?
Tambahan:
Ia bekerja dengan ketergantungan untuk seluruh Java EE 6 API dan pengaturan berikut:
<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>
I'd sukai untuk hanya menambahkan Servlet API sebagai ketergantungan, tetapi "Brabster" mungkin benar yang terpisah dependensi telah digantikan oleh Java EE 6 Profil. Apakah ada sumber yang menegaskan asumsi ini?
Hal ini tampaknya akan ditambahkan baru-baru ini:
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>
I'd sukai untuk hanya menambahkan Servlet API sebagai ketergantungan,
Jujur, saya'm tidak yakin untuk memahami mengapa tapi sudahlah...
Brabster terpisah dependensi telah digantikan oleh Java EE 6 Profil. Apakah ada sumber yang menegaskan asumsi ini?
Maven repositori dari Java.net memang ini berikut artefak untuk 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>
Toples ini termasuk 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.
Tapi untuk pengetahuan saya, tidak ada yang memungkinkan untuk mengatakan bahwa Api ini tidak't akan didistribusikan secara terpisah (di java.net gudang atau di tempat lain). Misalnya (ok, mungkin kasus tertentu), yang JSF 2.0 API yang tersedia secara terpisah (di java.net repositori):
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.0-b10</version>
<scope>provided</scope>
</dependency>
Dan sebenarnya, anda bisa mendapatkan javax.servlet-3.0.jar
dari ada dan menginstalnya di repositori sendiri.
Atau anda dapat menggunakan Maven Central Repository dengan Servlet 3.0 API yang juga disediakan untuk 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>
dari sini: http://repo2.maven.org/maven2/org/apache/tomcat/tomcat-servlet-api/7.0.21/
Sayangnya, menambahkan javaee-(web)-api sebagai ketergantungan doesn't memberikan anda Awal atau Sumber ke Servlet Api untuk mengakses mereka dari dalam IDE. Hal ini juga terjadi untuk semua dependensi lain (JPA, EJB, ...) Jika anda membutuhkan Servlet API sumber/javadoc, anda dapat menambahkan kode berikut untuk anda pom.xml (bekerja setidaknya untuk JBoss&Glassfish):
Repositori:
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
Ketergantungan:
<!-- 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>
Aku benar-benar dihapus javaee-api dari ketergantungan dan diganti dengan bagian diskrit (javax.ejb, javax.wajah, ...) untuk mendapatkan sumber-sumber dan Javadocs untuk semua bagian dari Java EE 6.
EDIT:
Berikut ini adalah setara dengan Glassfish ketergantungan (meskipun kedua dependensi harus bekerja, tidak peduli apa masalah yang anda gunakan).
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>provided</scope>
</dependency>
Berikut adalah apa yang saya gunakan. Semua ini adalah di Tengah dan memiliki sumber-sumber.
Untuk Tomcat 7 (Java 7, Servlet 3.0)
Catatan - Servlet, JSP dan EL Api yang disediakan di Tomcat. Hanya JSTL (jika digunakan) kebutuhan akan dibundel dengan aplikasi 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>
Untuk 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 proyek menyediakan Servlet 3.0 API ketergantungan pada Maven Central repo:
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_3.0_spec</artifactId>
<version>1.0</version>
</dependency>
Saya menemukan contoh POM untuk Servlet 3.0 API pada DZone dari September.
Sarankan anda menggunakan java.net repo, di http://download.java.net/maven/2/
Ada Java EE Api di sana, misalnya http://download.java.net/maven/2/javax/javaee-web-api/6.0/ dengan POM yang terlihat seperti mereka mungkin apa yang anda're setelah, misalnya:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
</dependency>
I'm menebak bahwa versi konvensi untuk Api telah diubah untuk mencocokkan versi dari keseluruhan EE spec (yaitu Java EE 6 vs Servlet 3.0) sebagai bagian dari new 'profil'. Mencari ke dalam TOPLES, sepertinya semua 3.0 servlet barang-barang yang ada di sana. Nikmati!
Cara yang nyaman (JBoss dianjurkan) untuk memasukkan Java EE 6 dependensi yang ditunjukkan di bawah ini. Akibatnya ketergantungan ditempatkan secara terpisah (tidak semua dalam satu jar seperti di javaee-web-api), file sumber dan javadocs dari perpustakaan yang tersedia untuk di-download dari repository maven.
<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>
Untuk mencakup individu dependensi hanya, dependencyManagement
bagian dan ruang lingkup impor
dapat digunakan:
<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>