Baptiste, Mirko,

thanks for your answers. I was unable to override the scope in a depending POM, 
I tried several approaches, e.g. redefining "dependencyManagement" in the child 
POM - to no avail. I have heard about the rule/idiom "dependency mgmt overrides 
dependency scope" before, but I have not found a comprehensive (i.e. 
understandable) explanation with concrete examples anywhere.

Baptiste, how and why would an intermediate POM help me solve this problem? I 
think it is rather funny to define an intermediate POM for just one module 
needing it. If you could give me an example that would be great, maybe then I 
understand better. My guess is you mean something like this:


Parent POM:
...
<dependencyManagement><dependencies>
  <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>${groovy-all.version}</version>
    <scope>test</scope>
  </dependency>
</dependencies></dependencyManagement>
...
<dependencies>
  <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
  </dependency>
</dependencies>


Intermediate POM:
...
<parent>[my parent POM]</parent>
...
<dependencyManagement><dependencies>
  <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>${groovy-all.version}</version>
    <scope>compile</scope>
  </dependency>
</dependencies></dependencyManagement>


Child POM for module which needs groovy-all during runtime:
...
<parent>[my intermediate POM]</parent>
...
<dependencies>
  <dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
  </dependency>
</dependencies>


Is that what you mean? Have you tested it? Does it really work? Please correct 
my (untested, I am on the road) sketch if it is wrong.

Regards
-- 
Alexander Kriegisch


Baptiste Mathus schrieb am 28.03.2014 17:45:

> IIUC, you have a unique parent pom (likely a "corporate pom"), let's can
> him P. P says scope is test for groovy-all.
> 
> You have modules m1, m2... who all inherits P.
> 
> In some module mN, you need groovy-all with scope compile.
> 
> But m1 actually depends on mN and will crash since the dependency onto
> groovy-all isn't retrieved?
> 
> If so, then this is expected. Dependency mgmt overrides the dependencies
> scope. One possible solution to centralize many redefinitions is to create
> an intermediate parent for those modules where you need groovy-all with
> scope compile.
> I think that's what Mirko was proposing.
> 
> Does that help?
> 
> 
> Le 28 mars 2014 15:08, "Mirko Friedenhagen" <[email protected]> a
> écrit :
> 
>> AFAIK you may override the scope in the inheriting poms. If I remember
>> correctly I did this with junit as I needed it for an selenium test
>> project, where I had put base tests beneath src/main (to recite Brecht: oh,
>> don't ask why).
>>
>>
>> On Mar 28, 2014 2:59 PM, "Alexander Kriegisch" <[email protected]>
>> wrote:
>>
>> > I have a situation as follows:
>> >
>> >   - Multi-module project (~30 modules)
>> >
>> >   - Certain test dependencies (e.g. groovy-all) needed by nearly all
>> >     sub-modules are declared directly with test scope in the parent POM
>> >     (not just dependencyManagement, but also dependency). I know this is
>> >     considered to be bad practice but it saves a lot of redundant
>> >     dependency duplication.
>> >
>> >   - One new sub-module now actually also needs groovy-all, but with a
>> >     compile scope. So my wish (although seemingly unsupported by Maven)
>> >     is to override the default scope for this sub-module so as for the
>> >     dependency to be actually available during runtime.
>> >
>> > How can I do this or work around the need to duplicate my test
>> > dependencies in 30 modules just so as to be able to define the scope for
>> > the new module? AFAIK a POM can only inherit from one POM. But can I
>> > somehow use an "included POM" in my 30 modules in order to be able to
>> > centrally manage the test dependencies? Sorry if I am explaining this
>> > wrong or using incorrect erms, but I am by no means a Maven pro.
>> > Hopefully I was at least able to make my intent clear. I am looking for
>> > good advice beyond lecturing about how I should really, really declare
>> > everything 30 times in order to do it the Maven way. I am looking for
>> > alternatives, am willing to learn and hoping to get constructive answers.
>> >
>> > Thanks you all in advance

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to