I would offer <scope>alsoProvides</scope>
for the feature you propose. On Tue, Jun 28, 2011 at 11:11 AM, Stephen Connolly <stephen.alan.conno...@gmail.com> wrote: > On 28 June 2011 14:38, Benson Margulies <bimargul...@gmail.com> wrote: >>> >>> Because why should I have to always state that I'm using >>> org.slf4j:log4j-over-slf4j and that it provides log4j:log4j much >>> better that the pom for org.slf4j:log4j-over-slf4j says "oh and by the >>> way I provide log4j:log4j myself so you don't need to pull it in >>> transitively if you depend on me" >> >> I think that you are abusing the term 'dependency' here. I think that, >> if this is worth doing, it's worth adding a new element to the POM at >> the same level as 'dependencies' to declare that the project's >> artifact also provides a list of additional gavs. >> > > I agree, but if you stick to the "cannot change the pom format" the > only thing you can just about do is introduce a new scope. > >>> >>> maven could then break the build for you if you pull in log4j:log4j >>> and org.slf4j:log4j-over-slf4j just as it does if you try to pull in >>> two different versions of log4j:log4j >>> >>> and it could ensure that a project that depends on >>> org.slf4j:log4j-over-slf4j never has log4j:log4j in its dependency >>> tree. >>> >>> People will say that OSGi is the real answer here, and that you have >>> to... blah blah blah... we are in the real world here, OSGi is good >>> for some things and not for others, Maven needs a solution that is >>> better than having to add >>> <excludes><exclude><groupId>log4j</groupId><artifactId>log4j</artifactId></exclude></excludes> >>> to _all_ the dependencies in your project just because you have added >>> a dependency on org.slf4j:log4j-over-slf4j >>> >>>> >>>> >>>>> So that when computing the dependency tree, we could automatically >>>>> exclude dependencies that are already provided or supplied or embedded >>>>> in another dependency. >>>>> >>>>> The sticking point for me is that it needs a good name different from >>>>> "provided" >>>>> >>>>>>> this easier to explain. Try writing a paragraph of doc that we'd put >>>>>>> in the pom doc to explain 'provided' if we decide to just stick with >>>>>>> this. >>>>>>> >>>>>>> However, I have a really simple idea. What if we permitted *no scope >>>>>>> at all* for non-jar artifacts to serve this purpose? >>>>>>> >>>>>> >>>>>> no scope => compile (modello default value) >>>>>> >>>>>> also dependency on war artifacts is used for war overlays.... >>>>>> >>>>>> what I am thinking is that if we change the war plugin so that only >>>>>> scope compile wars are used for overlays, then tomcat maven plugin is >>>>>> free to use either provided and/or runtime as the scope for >>>>>> side-deployment... runtime could be good if you always needed it as a >>>>>> side webapp (e.g. the ear plugin could then pull those runtime wars in >>>>>> transitively, while the provided would behave as non-transitive) >>>>>> >>>>>>> >>>>>>> On Mon, Jun 27, 2011 at 8:32 PM, Stephen Connolly >>>>>>> <stephen.alan.conno...@gmail.com> wrote: >>>>>>>> the wars are really side web apps that are provided by somebody else at >>>>>>>> deployment time in the runtime container. >>>>>>>> >>>>>>>> just as the server api is provided by somebody else. >>>>>>>> >>>>>>>> the tomcat plugin is providing the container, so as it knows those >>>>>>>> side apps >>>>>>>> are not present it would make sense to me if it provided them for me. >>>>>>>> just >>>>>>>> like when running unit tests, surfer will provide the provided deps on >>>>>>>> my >>>>>>>> test classpath. >>>>>>>> >>>>>>>> what i am saying is tomato does not need a special scope. symmantically >>>>>>>> their required scope is provided. >>>>>>>> >>>>>>>> - Stephen >>>>>>>> >>>>>>>> --- >>>>>>>> Sent from my Android phone, so random spelling mistakes, random >>>>>>>> nonsense >>>>>>>> words and other nonsense are a direct result of using swype to type on >>>>>>>> the >>>>>>>> screen >>>>>>>> On 28 Jun 2011 00:46, "Benson Margulies" <bimargul...@gmail.com> wrote: >>>>>>>>> The tomcat wars are NOT provided. The idea is to grab them from the >>>>>>>>> repositories, copy them to the local repo, and have the tomcat plugin >>>>>>>>> 'collect them all.' >>>>>>>>> >>>>>>>>> I didn't know that maven already had the concept of non-classpath >>>>>>>>> artifact types. I've been laboring under the idea that these things >>>>>>>>> would end up in the classpath if not excluded somehow. >>>>>>>>> >>>>>>>>> Tomcat could stop using the special scope, but then it would need to >>>>>>>>> redundantly list these artifacts in its own config, unless the author >>>>>>>>> were willing to take the attitude that *all* war dependencies should >>>>>>>>> be launched. Using foo:bar syntax instead of a nest of XML that is >>>>>>>>> perhaps not too awful, but it still feels like listing the same thing >>>>>>>>> twice. Hmm: how does the new site plugin avoid this? With the new site >>>>>>>>> plugin, can you built a reporting plugin in the reactor and then use >>>>>>>>> it in a site? I bet not. >>>>>>>>> >>>>>>>>> In short, I'm arguing for some idea of annotating dependencies to >>>>>>>>> avoid redundantly calling them out in plugins, but I'm not arguing >>>>>>>>> terribly loudly. >>>>>>>>> >>>>>>>>> On Mon, Jun 27, 2011 at 7:22 PM, Stephen Connolly >>>>>>>>> <stephen.alan.conno...@gmail.com> wrote: >>>>>>>>>> On 28 June 2011 00:15, Benson Margulies <bimargul...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>>> Consider the tomcat use case, and then mine. >>>>>>>>>>> >>>>>>>>>>> The tomcat use-case is: declare additional artifacts of >>>>>>>>>>> type/packaging >>>>>>>>>>> 'war'. The plugin launches them as additional webapps. >>>>>>>>>> >>>>>>>>>> Why won't provided work for this? >>>>>>>>>> >>>>>>>>>> war is a non-classpath dependency... compile (default) makes sense >>>>>>>>>> for >>>>>>>> overlays >>>>>>>>>> >>>>>>>>>> provided -> supplied by the container... in this case tomcat >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> My use case: This artifact of code, here, depends on that giant >>>>>>>>>>> artifact of data, there. >>>>>>>>>>> >>>>>>>>>>> In both cases, the dependency *does* need to be copied to the local >>>>>>>>>>> repo, but does *not* want to be in classpath. >>>>>>>>>> >>>>>>>>>> then that is a non-classpath artifact type unless i mis-understand >>>>>>>>>> your >>>>>>>> case >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> So, what would you think of >>>>>>>>>>> >>>>>>>>>>> <dependency> >>>>>>>>>>> <!-- gav --> >>>>>>>>>>> <scope>non-classpath</scope> >>>>>>>>>>> <list>tomcat</list> >>>>>>>>>>> </dependency> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> That is, define the concept of a named list of dependencies, which >>>>>>>>>>> seems harmlessly extensible, while defining exactly one more scope, >>>>>>>>>>> to >>>>>>>>>>> use for this purpose? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Jun 27, 2011 at 6:54 PM, Stephen Connolly >>>>>>>>>>> <stephen.alan.conno...@gmail.com> wrote: >>>>>>>>>>>> Allowing people to have custom scopes is a thin end of the wedge... >>>>>>>>>>>> >>>>>>>>>>>> The scopes we have are not sufficient, so I am +1 to expanding them >>>>>>>>>>>> >>>>>>>>>>>> Custom scopes are a recipe for disaster... the whole point of >>>>>>>>>>>> standardization is that everyone knows what they mean. >>>>>>>>>>>> >>>>>>>>>>>> Currently we have: >>>>>>>>>>>> >>>>>>>>>>>> compile - which we have borked to be transitive but shouldn't be >>>>>>>>>>>> runtime - fair enough >>>>>>>>>>>> provided - which is closer to what compile should have been >>>>>>>>>>>> test - not good enough for the multitude of testing phases >>>>>>>>>>>> system - Eeek! don't use >>>>>>>>>>>> import - nobody has a clue what exactly this does >>>>>>>>>>>> >>>>>>>>>>>> Critically missing from my PoV are: >>>>>>>>>>>> >>>>>>>>>>>> provides - needs a better name, but I want to signify that I >>>>>>>>>>>> provide a >>>>>>>>>>>> specific GAV in my pom so that you don't bother trying to pull it >>>>>>>>>>>> in >>>>>>>>>>>> for another dep... eg. log4j-over-slf4 would provides log4j >>>>>>>>>>>> >>>>>>>>>>>> test-compile >>>>>>>>>>>> test-runtime >>>>>>>>>>>> >>>>>>>>>>>> some scope that is like compile & runtime but not the test >>>>>>>>>>>> classpath... >>>>>>>>>>>> >>>>>>>>>>>> Actually the more I think about it what you really want to >>>>>>>>>>>> specify, in >>>>>>>>>>>> a standardized way is the list of classpaths to add to, and >>>>>>>>>>>> whether it >>>>>>>>>>>> is transitive on that classpath... >>>>>>>>>>>> >>>>>>>>>>>> And of course in the non-maven world, classpath does not make >>>>>>>>>>>> sense... >>>>>>>>>>>> but there are equivalents >>>>>>>>>>>> >>>>>>>>>>>> <dependency> >>>>>>>>>>>> <groupId>...</groupId> >>>>>>>>>>>> <artifactId>...</artifactId> >>>>>>>>>>>> <version>...</version> >>>>>>>>>>>> <scopes> >>>>>>>>>>>> <scope> >>>>>>>>>>>> <name>compile</name> >>>>>>>>>>>> <transitive>true</transitive> >>>>>>>>>>>> </scope> >>>>>>>>>>>> <scope> >>>>>>>>>>>> <name>runtime</name> >>>>>>>>>>>> <transitive>false</transitive> >>>>>>>>>>>> </scope> >>>>>>>>>>>> <scope> >>>>>>>>>>>> <name>test</name> >>>>>>>>>>>> <transitive>true</transitive> >>>>>>>>>>>> </scope> >>>>>>>>>>>> </scopes> >>>>>>>>>>>> </dependency> >>>>>>>>>>>> >>>>>>>>>>>> Man that's ugly >>>>>>>>>>>> >>>>>>>>>>>> On 27 June 2011 23:27, Benson Margulies <bimargul...@gmail.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>>> Two options in my head: >>>>>>>>>>>>> >>>>>>>>>>>>> 1) Eliminate the warning. >>>>>>>>>>>>> 2) Allow some means for officially defining scopes -- the problem >>>>>>>>>>>>> being that the consumer is the logical place for the definition. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 2011/6/27 Arnaud Héritier <aherit...@gmail.com>: >>>>>>>>>>>>>> I don't have any pointer in mind except this page which doesn't >>>>>>>>>>>>>> say >>>>>>>> much >>>>>>>>>>>>>> than a stricter validation of POM : >>>>>>>>>>>>>> >>>>>>>> https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-StricterPOMValidation >>>>>>>>>>>>>> But that right that in maven 2 we just ignored unknown scopes >>>>>>>>>>>>>> while >>>>>>>> maven 3 >>>>>>>>>>>>>> throws a warning >>>>>>>>>>>>>> >>>>>>>>>>>>>> Arnaud >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, Jun 27, 2011 at 7:02 PM, Benson Margulies < >>>>>>>> bimargul...@gmail.com>wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> In looking at the tomcat plugin, I noticed that it depends on >>>>>>>>>>>>>>> using >>>>>>>> a >>>>>>>>>>>>>>> custom scope, and there was commentary complaining that maven 3 >>>>>>>>>>>>>>> complains. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Is there a thread or a JIRA about this? I'm contemplating >>>>>>>>>>>>>>> creating >>>>>>>>>>>>>>> something like this of my own, and I'd like to know what >>>>>>>>>>>>>>> trouble I'm >>>>>>>>>>>>>>> getting myself into. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>> >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>> For additional commands, e-mail: dev-h...@maven.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >> For additional commands, e-mail: dev-h...@maven.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > For additional commands, e-mail: dev-h...@maven.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org