On Fri, Nov 27, 2009 at 9:46 PM, Jörg Schaible <joerg.schai...@gmx.de> wrote: > Hi Phil and Niall, > > Phil Steitz wrote: > >> Niall Pemberton wrote: >>> On Fri, Nov 27, 2009 at 10:45 AM, Jörg Schaible <joerg.schai...@gmx.de> >>> wrote: >>>> Hi Grzegorz, >>>> >>>> Grzegorz Słowikowski wrote at Freitag, 27. November 2009 10:45: >>>> >>>>> Hi Jorg >>>>> >>>>> Jörg Schaible wrote: >>>>>> Hi Grzegorz, >>>>>> >>>>>> Grzegorz Słowikowski wrote at Freitag, 27. November 2009 09:04: >>>> [snip] >>>> >>>>> I didn't thought about Maven in this sentence. For me generally it's >>>>> not good practice to create >>>>> two different artifacts (different artifactId) which cannot be present >>>>> in the classpath together. >>>> For sure, but the causing problem cannot be solved by any build tool. >>>> Look at the following situation: >>>> >>>> X - your project >>>> X depends on A and B >>>> A depends on dbcp-jdbc3 >>>> B depends on dbcp-jdbc4 >>>> >>>> Result: Your app is simply broken. It does not matter whether the build >>>> tool will place both dbcp jars into a shared library or only one of the >>>> jars and this is completely independent of the dbcp jar's names. >>> >>> I don't agree its not broken - its a normal situation. In this >>> scenario you use DBCP 1.4 and that should work just fine with both >>> dependency A and B. In maven terms it will do its normal dependency >>> resolution and pick the later DBCP version. >> >> I don't follow this - either the assertion that it will "work" or >> that maven will only include 1.4. IIUC, the "later version" >> resolution will only happen if we stick with the same groupId. >> Secondly, given the incompatibilities, the A part could blow up if >> dbcp 1.4 is used (of course, Jorg's point is that A and B are >> already incompatible in this case). > > I guess Niall has a point. However, look at this scenario with the example > above: > > X is using Java 6 > A has been build using Java 1.4 (hence JDBC 3) > B has been build using Java 6 > > The question is now whether the app is broken or not. Can X using A > successfully run on JDBC 4?
Yes because nothing has been removed from JDBC 3 -> JDBC 4. Its no different from X is using Commons IO 1.4 and A was built using Commons IO 1.3 - can X using A successfully run with IO 1.4? As long as IO is backwards compatible then theres no problem - same for JDBC. There would have been screams by now if Apps built using JDBC 3 didn't work when moving to JDK 1.6 (and therefore JDBC 4) Niall > - Jörg --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org