FAQ

On 2/6/07, Bashar Abdul Jawad wrote:
Yes, but sometimes you will need to use a dependency for compile time
only,
and NOT for runtime. You don't need the container to provide it for you
either because it is not required for runtime. Example: aspectjtools.jar.
You can't exclude it because your project will not compile. The only way
is
to give it the provided scope.

That is not correct. Declaring a dependency to be optional puts it on the
compile classpath, but avoids any attempt to include it at runtime.


Even if your container doesn't provide it
that's not a problem, maven doesn't care. I know it is not very clean to
give a dependency a provided scope when it's not going to be provided
anywhere, but sometimes you need to do this if you want to compile against
it.

The semantics of "provided" are different than "optional" even though Maven
does not enforce it.

The code you write against a "provided" API assumes that the API will indeed
be provided by the container. As an example, you might declare as
"provided" a library that you've installed in Tomcat's common/lib
directory. The library must be there in order for the application to
function -- but Maven can assume that it will indeed by supplied by the
container, so won't include it in the WAR.

"Optional", on the other hand, means what it says. Declaring such a
dependency means that you will need it available at compile time FOR THE
DEPENDENCY, but not necessarily for your own code (unless you explicitly
need it for other reasons). The library is explicitly NOT required at
runtime, because your dependency has said, in effect, "I can use this
library if it exists, but if it does not, no harm no foul."

Note also that "optional" is NOT a scope -- it is a completely separate
element. That is because the concept of being optional is orthogonal to
scope ... it's perfectly reasonable, for example, to have an optional module
with "compile" scope if your build process knows how to intelligently deal
with that combination.

PLEASE do not misuse "provided" scope to mean the "optional" element or vice
versa. PLEASE set up your POMs to say what you mean. These are two
DIFFERENT concepts!

Craig

Bashar
-----Original Message-----
From: carlossg@gmail.com On Behalf Of Carlos
Sanchez
Sent: Tuesday, February 06, 2007 5:18 PM
To: Maven Users List
Subject: Re: dependencies are bloated in M2

still not right, you have to use exclusions
provided means the environment (read appserver) "provides" that
dependency, which is only true for few dependencies in the whole
world, like servlet-api
On 2/6/07, Bashar Abdul Jawad wrote:

This is the question I was answering:
Tandon, Pankaj wrote:

1. How can we control what get's into WEB-INF/lib. We tried all the
scopes mentioned, but that did not help.
And it's follow up:
Christian Goetze wrote:

I believe that the scope that should work is "provided". The problem
is
that I don't know if maven is smart enough to remove a provided
dependency from the transitive closure. I would call that a bug if
it
didn't.
And the answer to these 2 questions is to use the provided scope. It will
also stop a dependency from being passed on transitively. Using
exclusions
is NOT right if you still want to compile against these dependencies.

Bashar


-----Original Message-----
From: carlossg@gmail.com On Behalf Of Carlos
Sanchez
Sent: Tuesday, February 06, 2007 5:02 PM
To: Maven Users List
Subject: Re: dependencies are bloated in M2

exactly, that's why he needs to use exclusions, you exclude things
that you don't need.
On 2/6/07, Bashar Abdul Jawad wrote:
It is the right solution. Using exclusions will exclude a dependency
from
being downloaded at all, which means it won't be available at any
path.
Using provided will still make the dependency available for compile
time,
but not in runtime, and will not bundle it in the package.

Read maven FAQ:

http://maven.apache.org/general.html#scope-provided



-----Original Message-----
From: carlossg@gmail.com On Behalf Of
Carlos
Sanchez
Sent: Tuesday, February 06, 2007 4:29 PM
To: Maven Users List
Subject: Re: dependencies are bloated in M2

that's not the right solution, you have to use exclusions
On 2/6/07, Bashar Abdul Jawad wrote:
It will. If you don't want to include a particular dependency in
your
generated package just give it the provided scope, it will be
excluded
even
if it was a transitive dependency of something else.

Bashar

-----Original Message-----
From: Christian Goetze
Sent: Tuesday, February 06, 2007 2:58 PM
To: Maven Users List
Subject: Re: dependencies are bloated in M2

Tandon, Pankaj wrote:

So the questions are:
1. How can we control what get's into WEB-INF/lib. We tried all the
scopes mentioned, but that did not help.
I believe that the scope that should work is "provided". The problem
is
that I don't know if maven is smart enough to remove a provided
dependency from the transitive closure. I would call that a bug if
it
didn't.

--
cg
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
-- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
-- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
-- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 17 of 19 | next ›
Discussion Overview
groupusers @
categoriesmaven
postedFeb 6, '07 at 6:52p
activeFeb 7, '07 at 4:29p
posts19
users7
websitemaven.apache.org
irc#maven

People

Translate

site design / logo © 2017 Grokbase