You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Mark Himsley <ma...@gmail.com> on 2014/04/15 17:45:43 UTC

endorsed library resolution - jaxb example

Hi,

The summary of the problem I'm trying to work around is that I need jars
retrieved for 'jaxb-api' to land in an 'endorsed' folder but I would prefer
it wasn't also in the usual 'lib' folder.
I'm reactively new to Ivy, so I'm probably missing something obvious.

To give more information: below is by ivy.xml file.

'jaxb-impl' itself has a dependency on 'jaxb-api' - but 'jaxb-api' needs to
be an endorsed library with Java 1.6 (sadly, my current build target)

When I <ivy:retrieve  conf="endorsed" ...> I get 'jaxb-api' - which is
perfect.
When I <ivy:retrieve  conf="default" ...> I get 'jaxb-impl' and all of its
dependants - which also includes jaxb-api.

Is is possible to create a configuration which is the set of 'jaxb-impl'
minus 'jaxb-api' ?

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module
    version="2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd
">
    <info
        organisation="BroadcastSystemsDevelopment"
        module="jupiter-XMLInterface"/>
    <configurations
        defaultconf="default">
        <conf
            name="default"
            description="the default libraries"/>
        <conf
            name="endorsed"
            description="endorsed libraries"/>
    </configurations>
    <publications>
        <artifact
            name="jupiter-XMLInterface"
            type="jar"/>
        <artifact
            name="jupiter-XMLInterface"
            type="pom"/>
    </publications>
    <dependencies>
        <dependency
            org="com.sun.xml.bind"
            name="jaxb-impl"
            rev="2.2.7"/>
        <dependency
            org="javax.xml.bind"
            name="jaxb-api"
            rev="2.2.7"
            conf="endorsed->default"/>
    </dependencies>
</ivy-module>


Thanks :-)


-- 
Mark Himsley

Re: endorsed library resolution - jaxb example

Posted by Mark Himsley <ma...@gmail.com>.
Marc,

Thank you.

I had missed the common 'exclude' child element from the "post resolve
tasks" page. That is exactly the 'something obvious' that I was missing.

I should have mentioned that the other libraries are all coming from the
default maven 2 repository, so I don't believe I could have used your
alternative solution - but your comment will influence how I build my own
decencies.

Thanks again.



On 16 April 2014 07:01, Marc De Boeck <md...@gmail.com> wrote:

> You could add in the ivy.xml of jupiter-XMLInterface an exclude statement
> inside the dependency for jaxb-impl:
>
>         <dependency org="com.sun.xml.bind" name="jaxb-impl"  rev="2.2.7">
>                 <exclude module="jaxb-api" />
>         </dependency>
>
> Alternatively, you can also change the ivy.xml of jaxb-impl and use the
> "endorsed" conf there in the same way as you do in jupiter-XMLInterface.
>
> Marc
>
>
> 2014-04-15 17:45 GMT+02:00 Mark Himsley <ma...@gmail.com>:
>
> > Hi,
> >
> > The summary of the problem I'm trying to work around is that I need jars
> > retrieved for 'jaxb-api' to land in an 'endorsed' folder but I would
> prefer
> > it wasn't also in the usual 'lib' folder.
> > I'm reactively new to Ivy, so I'm probably missing something obvious.
> >
> > To give more information: below is by ivy.xml file.
> >
> > 'jaxb-impl' itself has a dependency on 'jaxb-api' - but 'jaxb-api' needs
> to
> > be an endorsed library with Java 1.6 (sadly, my current build target)
> >
> > When I <ivy:retrieve  conf="endorsed" ...> I get 'jaxb-api' - which is
> > perfect.
> > When I <ivy:retrieve  conf="default" ...> I get 'jaxb-impl' and all of
> its
> > dependants - which also includes jaxb-api.
> >
> > Is is possible to create a configuration which is the set of 'jaxb-impl'
> > minus 'jaxb-api' ?
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <ivy-module
> >     version="2.0"
> >     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >     xsi:noNamespaceSchemaLocation="
> > http://ant.apache.org/ivy/schemas/ivy.xsd
> > ">
> >     <info
> >         organisation="BroadcastSystemsDevelopment"
> >         module="jupiter-XMLInterface"/>
> >     <configurations
> >         defaultconf="default">
> >         <conf
> >             name="default"
> >             description="the default libraries"/>
> >         <conf
> >             name="endorsed"
> >             description="endorsed libraries"/>
> >     </configurations>
> >     <publications>
> >         <artifact
> >             name="jupiter-XMLInterface"
> >             type="jar"/>
> >         <artifact
> >             name="jupiter-XMLInterface"
> >             type="pom"/>
> >     </publications>
> >     <dependencies>
> >         <dependency
> >             org="com.sun.xml.bind"
> >             name="jaxb-impl"
> >             rev="2.2.7"/>
> >         <dependency
> >             org="javax.xml.bind"
> >             name="jaxb-api"
> >             rev="2.2.7"
> >             conf="endorsed->default"/>
> >     </dependencies>
> > </ivy-module>
> >
> >
> > Thanks :-)
> >
> >
> > --
> > Mark Himsley
> >
>



-- 
Mark Himsley

Re: endorsed library resolution - jaxb example

Posted by Marc De Boeck <md...@gmail.com>.
You could add in the ivy.xml of jupiter-XMLInterface an exclude statement
inside the dependency for jaxb-impl:

        <dependency org="com.sun.xml.bind" name="jaxb-impl"  rev="2.2.7">
                <exclude module="jaxb-api" />
        </dependency>

Alternatively, you can also change the ivy.xml of jaxb-impl and use the
"endorsed" conf there in the same way as you do in jupiter-XMLInterface.

Marc


2014-04-15 17:45 GMT+02:00 Mark Himsley <ma...@gmail.com>:

> Hi,
>
> The summary of the problem I'm trying to work around is that I need jars
> retrieved for 'jaxb-api' to land in an 'endorsed' folder but I would prefer
> it wasn't also in the usual 'lib' folder.
> I'm reactively new to Ivy, so I'm probably missing something obvious.
>
> To give more information: below is by ivy.xml file.
>
> 'jaxb-impl' itself has a dependency on 'jaxb-api' - but 'jaxb-api' needs to
> be an endorsed library with Java 1.6 (sadly, my current build target)
>
> When I <ivy:retrieve  conf="endorsed" ...> I get 'jaxb-api' - which is
> perfect.
> When I <ivy:retrieve  conf="default" ...> I get 'jaxb-impl' and all of its
> dependants - which also includes jaxb-api.
>
> Is is possible to create a configuration which is the set of 'jaxb-impl'
> minus 'jaxb-api' ?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module
>     version="2.0"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xsi:noNamespaceSchemaLocation="
> http://ant.apache.org/ivy/schemas/ivy.xsd
> ">
>     <info
>         organisation="BroadcastSystemsDevelopment"
>         module="jupiter-XMLInterface"/>
>     <configurations
>         defaultconf="default">
>         <conf
>             name="default"
>             description="the default libraries"/>
>         <conf
>             name="endorsed"
>             description="endorsed libraries"/>
>     </configurations>
>     <publications>
>         <artifact
>             name="jupiter-XMLInterface"
>             type="jar"/>
>         <artifact
>             name="jupiter-XMLInterface"
>             type="pom"/>
>     </publications>
>     <dependencies>
>         <dependency
>             org="com.sun.xml.bind"
>             name="jaxb-impl"
>             rev="2.2.7"/>
>         <dependency
>             org="javax.xml.bind"
>             name="jaxb-api"
>             rev="2.2.7"
>             conf="endorsed->default"/>
>     </dependencies>
> </ivy-module>
>
>
> Thanks :-)
>
>
> --
> Mark Himsley
>