Maven dependency for Servlet 3.0 API?
To add the Servlet 3.0 API to your Maven project, include this snippet in your Maven pom.xml:
Setting <scope> to provided ensures that while the API is present during compilation, it won't get included in the final build—the container will supply it.
'Provided' scope demystified
Maven's provided scope is crucial for web applications running in a servlet container like Tomcat or JBoss. What provided communicates to Maven is:
- This dependency is necessary for compilation (Like coffee for coding!).
- It should be supplied at runtime (JIT: Just In Time).
- It should not be included in the final war file.
Matching API version to your environment
For Servlet 3.0, javax.servlet-api:3.0.1 is a great fit. But it's a good idea to match the version to your server and Java version:
- For Tomcat 7,
javax.servlet-api:3.0.1is a match made in heaven. - If you are looking at Tomcat 8, opt for
javax.servlet-api:3.1.0to benefit from extra features. - If you're a JBoss rider, the
jboss-servlet-api_3.0_specis just the ticket for you.
Dodge these bullets: Common pitfalls
When dealing with dependencies, maintain a clean house:
- Avoid including the entire Java EE 6 API if you need only the Servlet API.
- Don't bundle JSTL with your application when using a container like Tomcat that provides it for you.
- Keep a weather eye open for updates and version changes on the Maven repository - Ahoi, no surprises after upgrades!
Know your resources: Various alternatives & libraries
Java EE 6 has more to offer
The java.net repository is a great place to find other APIs such as JSF 2.0 that complement the Servlet API.
Glassfish Server alternatives
If Glassfish server is your jam, org.glassfish:javax.servlet might be your new best friend. Stay tuned to changes in Java EE API distribution to pick the right Glassfish version.
Java EE 6 Profiles & Javadocs
Interested in reducing dependencies? https://repository.jboss.org/nexus/content/groups/public/ hosts Javadocs and updates on Java EE 6 Profiles that can help.
Was this article helpful?