>
> 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.

>
> 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

Reply via email to