so I try to describe the problem with sample:

the setup of three artifacts
com.play.one - there two version 1.1 and 1.2
com.play.two-1.0-java - depends on com.play.one-1.1
com.play.three-1.0-java - depends on com.play.one-1.2,com.play.two-1.0-java

make a gems out of them - use my code here and I use dependency with
equals to the exact version (as the pom does)

jruby gives me in jirb:
require 'com.play.three'
Gem::LoadError: can't activate com.play.one (= 1.1, runtime) for
["com.play.two-1.0-java", "com.play.three-1.0-java"], already
activated com.play.one-1.2-java for ["com.play.three-1.0-java"]

maven does the following
DEBUG] com.play:three:jar:1.0-SNAPSHOT (selected for null)
[DEBUG]   com.play:one:jar:1.2:compile (selected for compile)
[DEBUG]   com.play:two:jar:1.0-SNAPSHOT:compile (selected for compile)
[DEBUG]     com.play:one:jar:1.1:compile (removed - nearer found: 1.2)
[DEBUG]   junit:junit:jar:3.8.1:test (selected for test)
[DEBUG] Plugin dependencies for:

everything install nicely but I can not use them :-(

I would suggest to use instead of equals to the version you use
something like equals or bigger the pom-version and smaller the next
major version. maven allows such version ranges. that should be OK if
artifact follows the maven versioning - I guess.

with regards
Kristian






On Mon, Feb 1, 2010 at 9:39 PM, Charles Oliver Nutter
<[email protected]> wrote:
> On Thu, Jan 28, 2010 at 7:33 AM, kristian <[email protected]> wrote:
>> hello,
>>
>> I have two thoughts about this. first one is more curiosity how this was 
>> solved:
>>
>> http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies
>> defines the "nearest definition". so in case the complete dependency
>> tree has two version of the same jar it chooses one. how is the
>> behavior mapped to rubygems since such a version resolution does not
>> exist there?
>
> I believe in the current server it would end up just walking the first
> such dependency it encounters, but I don't think we can rule out the
> possibility that it might install both versions. I have not
> checked...it's open for discussion.
>
>> second thought is:
>> my world of using ruby is basically rails with jruby and when I want
>> to deploy a rails application I would like to share as many
>> libraries/jar with all applications and do not repeat the same jars
>> for each application in WEB-INF/lib. typical example are the jdbc
>> drivers, the moment I use gems there is no way to share them anymore.
>> in data_objects (from datamapper) we do not require the jdbc-gem when
>> the respective jdbc driver is already in the classloader which allows
>> this kind of sharing the jdbc jars via the application server/servlet
>> engine.
>>
>> with datamapper we also experienced a classloader issue when the it
>> runs inside a webcontainer: when you get the jar as gem (via require
>> the respective gem) you can not use
>> Thread.currentThread().getContextClassloader() to load the jdbc driver
>> but need to use getClass().getClassloader() to load it. so here your
>> code behaves differently whether it comes from a jar or from a gem -
>> hmm. maybe that is more a jruby classloader issue then a gem wrapper
>> of jar issue.
>
> Yes, this is also an open question. Right now jar files are nicely
> loadable for Ruby code, but there's challenges to having the same
> mechanism work when the host JVM has already loaded those jars through
> another mechanism. One way might be to search the current classpath
> for those jars, but that's not reliable in cases where those jars are
> from a non-system classloader. Typical Java applications handle this
> in a very simple way: they basically don't allow dynamic runtime
> loading of jars at all, instead expecting that you'll set up
> classloaders/classpaths outside the execution of your application.
> That doesn't seem like a great option either.
>
> Open for dicussion :)
>
> - Charlie
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>



-- 
Kristian Meier + Saumya Sharma + Sanuka Meier
Vadakkethu House,
Edayanmula West PO - 689532,
Pathanamthitta District, Kerala, INDIA

tel: +91 468 2319577

protect your privacy while searching the net: www.ixquick.com

             _=_
           q(-_-)p
            '_) (_`
            /__/  \
         _(<_   / )_
      (__\_\_|_/__)

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to