Something I have said before too.. In terms of dependencies I think you need to look at 2 "channels".

First you have to look at incoming dependencies which is the stuff a project needs to compile, run tests, etc.

Then you have outgoing (or what I prefer to call exported) dependencies which is the stuff you report as being needed to use your project. So its the stuff your project exports transitively (if some project includes my project here is the set of additional deps they will get).

Today, iiuc these are both handled by configurations. I dont know enough of the innards here to know if that is enough. But I wanted to point out that its a 2-prong diskcussion.


On 04/15/2011 09:31 AM, Steve Ebersole wrote:
There are lots of JCP spec jars that are not allowed to be put into
repositories based on license terms. This used to be a huge issue with
JTA, but I guess recently GlassFish have finally pushed their CDDL clean
room artifact. But previously, tons of stuff needed to compile against
JTA and would need to depend on various clean room impls (JBoss,
GlassFish, etc). But they all had their own groupId/artifactOd schemes.

The point is you could easily end up with multiple JTA jars in your
project classpath just by including multiple libraries. And there was no
way to weed these out aside from manual process because they all have
different groupIds and artifactIds.

This has been fixed now for JTA (1.1 anyway, 1.0 is still this way) but
just rummage through the javax namespace in maven central.

Guys, provided is critical for frameworks as already pointed out.


On 04/15/2011 08:52 AM, Spencer Allain wrote:
This directly feeds into how things are autowired up for convenience,
and how to easily adjust for someone diverging from the norm.

Technically there is nothing special about providedCompile and
providedRuntime except that the war plugin uses them to declare the
classpath.

Really, what it is doing essentially is the following:

classpath = sourceSets.main.classes + configurations.runtime -
configurations.providedRuntime

We re-wire this to include the jar (manually re-enabled) so it is this:

classpath = jar.outputs.files + configurations.runtime -
configurations.providedRuntime

Since we generate artifacts that are essentially the same, but are
targeted at multiple application servers we really have something like
this for each task and we simply use the default providedRuntime as the
"base" excludes shared by all app servers:

classpath = jar.outputs.files + configurations.runtime -
configurations.providedRuntime - configurations.provided<AppServerName>

If the jar/war (and someday ear) tasks made it very simple to assign a
set of "include" configurations and "exclude" configurations in addition
to the default ones of compile and runtime I don't think having any
additional special named configurations would be necessary. This way
nothing changes for the average user, but lays the framework for someone
extending the jar/war tasks and simply setting the extra configurations
includes/excludes to handle most other cases.

-Spencer

--- On *Thu, 4/14/11, Jason Porter /<[email protected]>/* wrote:


From: Jason Porter <[email protected]>
Subject: Re: [gradle-user] Work on
http://issues.gradle.org/browse/GRADLE-471 ?
To: [email protected]
Cc: "Adam Murdoch" <[email protected]>
Date: Thursday, April 14, 2011, 11:19 PM

Sure, framework code that relies on libs that will be in the server.
For example with Seam 3 and CDI classes, or Hibernate needing JPA
classes. Those classes will be there in the server. These are jar
projects, not webapps.

On Thu, Apr 14, 2011 at 20:59, Adam Murdoch
<[email protected]
</mc/[email protected]>> wrote:


On 15/04/2011, at 1:59 AM, Jason Porter wrote:

Has there been any work done on this issue (providedCompile
outside of war projects)? I see Hans said this would be a 1.0
thing, and probably something to do with the publishing API
rework.

I'm not sure we want to do this, at least not without a good use
case. Do you have an example of why you want a provideCompile
configuration?


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support,
Consulting
http://www.gradleware.com




--
Jason Porter
http://lightguard-jp.blogspot.com
http://twitter.com/lightguardjp

Software Engineer
Open Source Advocate
Author of Seam Catch - Next Generation Java Exception Handling

PGP key id: 926CCFF5
PGP key available at: keyserver.net <http://keyserver.net>,
pgp.mit.edu <http://pgp.mit.edu>



--
Steve Ebersole <[email protected]>
http://hibernate.org

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to