You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by Sebastian Bazley <Se...@london.sema.slb.com> on 2004/01/06 22:57:58 UTC

Meaning of "runtime" (was: [PATCH] HttpClient HEAD dependencies)

----- Original Message ----- 
From: "Adam R. B. Jack" <aj...@trysybase.com>
To: "Gump code and data" <gu...@jakarta.apache.org>
Sent: Tuesday, January 06, 2004 5:37 PM
Subject: Re: [PATCH] HttpClient HEAD dependencies


> > Also, I'd be interested to know what a "runtime" dependency is - I did not
> > see this anywhare in the Gump docs.
>
> Runtime was one of the things that got me most in creating the classpath
> code for Python Gump. It is simple, but my heads somehow fails to get clear
> on it.
>
> Actually, there is reference in the docs:
> http://jakarta.apache.org/gump/metadata/project.html#depend
>
> It says (for these two attributes):
>
> inherit:
>
>     "runtime" which will only copy the runtime dependencies
>
> runtime:
>
>     Specifies whether this dependency is needed at runtime. Choices are
> "true" and "false" with the default being false.

But that does not tell me what runtime means ... see below.

>
> That said, not sure this is clear (as I now understand it), see below.
>
> > Does it mean that the dependency is not needed at compile-time?
> > And if a project has compile, javadoc and test targets, which of these get
> > the dependency?
>
> Good question. There are two things on a dependency, i.e. inherit="runtime"
> (go get things I need at runtime) and runtime="true" (this is needed at
> runtime for when somebody inherits).
>

Suppose we have:

project A
depend project=B1 inherit=runtime runtime=true
depend project=B2 inherit=runtime runtime=false

project C
depend project=A inherit=runtime

If I've understood correctly, project C will inherit the runtime dependencies of project A, i.e B1 in this case.

So the runtime attribute affects which of the dependencies are considered when another project uses inherit=runtime on the original
project.

I think I understand how the inherit relates to the runtime attribute - see above.
I don't understand how the runtime attribute is used *within* a project.

> At compile time a project only needs the things it needs for compiling to an
> interface (i.e. class signatures and classes that pass through it). As such
> the "runtime" dependencies ought be more than simply interface/compile-time.
>

Depending on what is meant by "runtime" (this is where I came unstuck!).

For example JMeter has several types of dependency:
- compile
- test (needs the same jars as compile, plus the jars created from the complied classes)
- printable docs (uses Anakia - which is not needed elsewhere - and does not need all the other jars)

So which of these are "runtime"?

> BTW: Writing this I wonder if I ought go revisit the code to see if it is
> clear in there. I suspect it is working as intended, but I don't think this
> is used as strictly as it once might have been. Bloated classpaths don't
> often cause problems, so we might not know from successful runs.

The Python web output should help here as it shows the classpath contributions.

S.


Re: Meaning of "runtime" (was: [PATCH] HttpClient HEAD dependencies)

Posted by Stefan Bodewig <bo...@apache.org>.
On Tue, 6 Jan 2004, Sebastian Bazley
<Se...@london.sema.slb.com> wrote:

> I think I understand how the inherit relates to the runtime
> attribute - see above.

Yes.

> I don't understand how the runtime attribute is used *within* a
> project.

Not at all.

> For example JMeter has several types of dependency: - compile - test
> (needs the same jars as compile, plus the jars created from the
> complied classes) - printable docs (uses Anakia - which is not
> needed elsewhere - and does not need all the other jars)
> 
> So which of these are "runtime"?

Only those you need to run JMeter.

Stefan