[
http://jira.jboss.com/jira/browse/JBSEAM-2199?page=comments#action_12385628 ]
Dan Allen commented on JBSEAM-2199:
-----------------------------------
I am getting pretty savvy at Maven 2 profiles, so I can likely help with ideas if we have
a clear goal in mind.
My feeling about provided vs optional is this:
optional - this library is needed if you use a fringe feature of the module, but it is
very likely that you can use the module without needing this on the classpath. For
instance, you can use seam core without using jboss rules, but if you do venture there,
you will need to add it as a dependency. It's a not a forced requirement. You are
conscience of your dependency on it.
provided - this is something that is part of the Java EE 5 specification (since JBoss Seam
is officially targeted at Java EE 5 and above). If it is included in the archive, things
will break. Break being the key word. This doesn't mean JBoss and it doesn't mean
Tomcat, though I would say more like Glassfish or the cross-breed of Glassfish and JBoss.
Candidates include JSF, Servlet API, JSP API, EL, JPA API. Hibernate would NOT be on this
list since it is not expected to be on the app server. I would make Hibernate an optional
dependency, which still saves the user from JBoss breakage.
I think the difference is pretty clear. If Tomcat is missing a library, then that means
the developer has to add it to their POM as a compile-time dependency (so it is bundled).
That's an okay thing to do...we want to be more on the conservative side than over
including. Nothing is uglier than a POM file with more exclusions than dependencies. (If
you want to see the result of this, just add Appfuse to your POM. Your bundled archive is
30MB+)
I know it sucks that Maven 2 doesn't have a better way of breaking down dependencies.
But I feel like my proposal can get us by with the best possible solution for the time
being. The follow up needs to be with the Maven 2 people to explain to them that we are
trying to use their tool and it just isn't covering the critical cases needed by a
framework like JBoss Seam (I'm not saying get rid of it, just improve it). We need to
hold their hand to the fire.
remove javax.servlet:servlet-api and javax.el:el-api as hard
dependencies in Maven 2
------------------------------------------------------------------------------------
Key: JBSEAM-2199
URL:
http://jira.jboss.com/jira/browse/JBSEAM-2199
Project: JBoss Seam
Issue Type: Task
Components: Core
Affects Versions: 2.0.0.GA
Reporter: Dan Allen
Assigned To: Pete Muir
Fix For: 2.0.1.GA
Original Estimate: 30 minutes
Remaining Estimate: 30 minutes
I feel that both the javax.servlet:servlet-api and javax.el:el-api dependencies should
always be declared at provided (or optional). Currently, the hard dependencies are as
such:
javax.servlet:servlet-api - debug, pdf, remoting, ioc
javax.el:el-api - core, debug, mail, pdf, ui
The provided scope, as you know, will be available for compile and tests, but not
deployed. Personally I feel that provided is the best choice because optional forces
developers to add it as a dependency when it is likely they will need it to compile. The
JSF POM files uses provided for the javax.servlet:servlet-api dependency, so perhaps we
should follow suit.
Basically, if the user wants to include a library that is part of Java EE 5 in their
project as a deployment dependency (compile or runtime), then they can comfortably add it.
Otherwise,they are forced to use a barrage of exclusions to get it booted. As it stands
now the JSF libraries are not included by default, so it stands to reason that the servlet
and EL APIs are also out. It is very easy for someone to include a build profile in their
project that throws these artifacts in for an older spec deployment.
Of course, this brings up the point that Maven 2 is really lame in how it does
exclusions. Wouldn't it be nice just to say "I never want this artifact, I
don't care what you say". Nope, let's just do it the hard way (says the Maven
2 folks), it is more fun.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira