I can't track down the thing I was referring to. It has a cute project
name and was embedded maven as a way to manage classpath containers
and plugin downloads at runtime. I also looked a bit at SISU to see if
it was applicable to your problem, but the eclipse site is not
revealing at this time.

On Sat, Apr 28, 2012 at 3:58 PM, Matt Narrell <matt.narr...@gmail.com> wrote:
> You can also use the maven-enforcer-plugin to identify dependencies
> that attempt to bring in older versions of transitive dependencies.
>
> On Apr 28, 2012, at 10:55 AM, Ron Wheeler
> <rwhee...@artifact-software.com> wrote:
>
>> It is not that hard.
>> You just paste the same exclusion into each POM that includes something that 
>> brings in a version that you do not want.
>>
>> To reduce the effort, make your POMs that produce artifacts that you deploy 
>> depend on your own POMs that only serve to bring in third party tools.
>> In that way the developer does not have to do any exclusions since your 
>> library POMs have already setup the third party dependencies correctly.
>>
>> mywar.pom depends on myapache.pom and myspring.pom and myjasper.pom.
>> myapache.pom and myspring.pom and myjasper.pom are sanitized to get rid of  
>> transitive dependencies that I will provide at run-time.
>>
>> Makes the job very simple
>> Once you do it once the developers have a much simpler life.
>>
>> Ron
>>
>> On 27/04/2012 5:47 PM, J.V. wrote:
>>> If I have a log4j exclusion in every <dependency> section, that would look 
>>> quite messy.  Is there a way to globally do this?
>>> We have dozens of dependencies, just looks like there would be an easier 
>>> way.  Nearly everything depends on log4j so that is a lot of work to add to 
>>> every dependency.  Not sure there is an easier way though.
>>>
>>> J.V.
>>>
>>> On 4/27/2012 1:44 PM, Ron Wheeler wrote:
>>>> You can either be god-like or trust that Tomcat will be.
>>>> You only need to do it once.
>>>> It takes a bit of time but, at the end, you know what you are running in 
>>>> production and developers don't have to worry about getting a 
>>>> MethodNotFound at run-time.
>>>>
>>>> It is not as bad as you think if you have a good IDE with Maven support. 
>>>> We use Eclipse STS from Springframework.
>>>>
>>>> It will look through your project POM and tell you where all your 
>>>> dependencies are coming from.
>>>>
>>>> You can then write excludes on your dependencies to stop them from 
>>>> bringing in transitive dependencies that you do not want.
>>>>
>>>> We made our own poms to bring in all the Apache stuff (commons-xxx, log4j, 
>>>> etc.) so we had a single dependency that developers could use in their 
>>>> projects to get the "right" version of all the "right" Apache libraries. 
>>>> They never had to worry about them again and if we wanted to upgrade 
>>>> log4j, we just did it in one place.
>>>> For third party libraries that had transitive dependencies on something 
>>>> like log4j, we just added an exclude to their dependency specification.
>>>>
>>>> We had a small team with a lot of modules so it really made everyone's 
>>>> life easier and I did not have to worry that someone would inject an old 
>>>> version into the system.
>>>>
>>>> Ron
>>>>
>>>>
>>>> On 27/04/2012 3:27 PM, J.V. wrote:
>>>>>
>>>>>
>>>>> On 4/27/2012 10:04 AM, Ron Wheeler wrote:
>>>>>> On 27/04/2012 11:40 AM, J.V. wrote:
>>>>>>> I understand how Maven resolves dependencies (and transitive 
>>>>>>> dependencies) at compile time, but does it bring anything to the table 
>>>>>>> at run time?
>>>>>> It makes your artifacts that your run-time environment will execute.
>>>>>> It is a build tool.
>>>>>>>
>>>>>>> For example, if I have in my application dependency list two versions 
>>>>>>> of log4J (let's say version 8 and version 15), will I deploy both 
>>>>>>> jars/version along with my app on say a tomcat server inside the war?
>>>>>> Fix it so you only have 1.
>>>>>> Settle on the "right" versions of third party libraries and use 
>>>>>> "exclusions" in your dependencies to prevent other libraries from 
>>>>>> grabbing older versions.
>>>>>    => this is a very tedious task.  I have to be godlike to know the 
>>>>> transitive dependencies and what libraries they use, and inspect my local 
>>>>> repository, find out all dups of everything, find out which top level 
>>>>> dependency needs it and go exclude this.  This is a maintenance nightmare.
>>>>>> Most software is upwards compatible so you will very seldom have any 
>>>>>> trouble.
>>>>>> For log4j, you want to specify the latest version.
>>>>>>
>>>>>>>
>>>>>>> At runtime which one does it choose?  If I am executing the code that 
>>>>>>> depends on version 8, how would the correct jar be in the classpath at 
>>>>>>> that point and later log4J version 15 be in my classpath when code that 
>>>>>>> has that dependency executes?
>>>>>>>
>>>>>> The runtime behaviour depends on the environment (Tomcat).
>>>>>> If you have 2 possible versions available, it will pick one based on how 
>>>>>> the programmers who wrote the environment thought that the world should 
>>>>>> work and in Tomcats case, what order the webapps started when the server 
>>>>>> came up which is not in your control.
>>>>>>
>>>>>> This can lead to MethodNotFound exceptions at runtime where someone 
>>>>>> calls a method that is available in Version 15 but your environment 
>>>>>> picked 8 to load.
>>>>>> Don't give it the choice.
>>>>>>
>>>>>>
>>>>>>> At runtime, Maven is out of the picture correct?  This is a missing 
>>>>>>> piece for me.
>>>>>>>
>>>>>> Yes. It just builds the wars, jars, etc. as per your specifications.
>>>>>>
>>>>>>> thanks
>>>>>>>
>>>>>>> J.V.
>>
>> --
>> Ron Wheeler
>> President
>> Artifact Software Inc
>> email: rwhee...@artifact-software.com
>> skype: ronaldmwheeler
>> phone: 866-970-2435, ext 102
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>> For additional commands, e-mail: users-h...@maven.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to