FYI, this idea did not work. I still need help. Maybe defining a BOM is the way to go, but I would prefer to keep everything in one repo and one project. -- Alexander Kriegisch
> Am 29.03.2014 um 11:35 schrieb "Alexander Kriegisch" > <[email protected]>: > > 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. > > > 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
