Hi Jaikiran,

Thanks for the reply. I tried you suggestion, but it didn't work. I was
already expecting it to fail because the issue happens within the system
namespace.

The problem occours because the namespace defintion wasn't in place when
the dependency was first added to the local cache. By then, Ivy simply
downloaded the POM and translated it to an ivy file, and both reference
"org.jboss:javassist". But after the namespace rules are added, the cache
isn't invalidated at any point. So, the wrong depedency remains.

The only workaround I have found so far is to remove the cache entries that
depend on incorrect org/names. When these are re-added to the cache, then
Ivy will apply the namespace defintions to the dependencies, as expected.

On Fri, Oct 5, 2018 at 9:19 AM Jaikiran Pai <jaiki...@apache.org> wrote:

> Hello Pedro,
>
> Given that the Ivy cache uses the system namespace, would adding a
> "fromsystem" in your namespace take care off this conversion. Something
> like:
>
> <namespace name="fix-javassist">
>           <rule>
>               <fromsystem>
>                   <src org="org.jboss" module="javassist"/>
>                   <src org="javassist" module="javassist"/>
>                   <dest org="org.javassist" module="javassist"/>
>               </fromsystem>
>               <tosystem>
>                   <src org="org.jboss" module="javassist"/>
>                   <src org="javassist" module="javassist"/>
>                   <dest org="org.javassist" module="javassist" />
>               </tosystem>
>           </rule>
>     </namespace>
>
>
> I haven't given it a try, but from my understanding, the cached
> reference (of org.jboss:javassist) which is in system namespace should
> then get converted to org.javassist:javassist, with the above
> configuration.
>
> Can you give that a try?
>
> -Jaikiran
>
>
> On 04/10/18 3:32 PM, Pedro de Carvalho Gomes wrote:
> > Hi all,
> >
> > My project downloads from a Maven respositories where different
> > dependencies do not have consistent names. For instance, javassist has
> > different ORG definitions:
> > - org.jboss if version < 3.8
> > - javassist if 3.8 <= version < 3.13
> > - org.javassist if version >= 3.13
> >
> > I fix this inconsistency with namespaces by mapping all ORGs to the most
> > recent:
> >
> > <namespace name="fix-javassist">
> >           <rule>
> >               <fromsystem/>
> >               <tosystem>
> >                   <src org="org.jboss" module="javassist"/>
> >                   <src org="javassist" module="javassist"/>
> >                   <dest org="org.javassist" module="javassist"/>
> >               </tosystem>
> >           </rule>
> > </namespace>
> >
> > However cached dependencies do not see the new namespace definitions. For
> > instance, a dependency that transitively depends on
> org.jboss#javassist-3.5
> > (as defined at its ivy-x.y.z.xml) won't map this to
> org.javasist#javassist.
> >
> > Is there a way to force namespace rules for cached dependencies?
> >
> > Pedro
> >
>
>

Reply via email to