>From the documentation, I also understand that it should be possible to do
what you described.

However, I would not use the extra-attributes for defining modules which
are different implementations of the same library. Having a module which
seems to depend upon itself (except for the extra attribute), could become
confusing.

You have different alternatives to deal with such situations:
* If each implementation has a different source-base and its own ivy.xml,
then you could define modules lib1-linux, lib1-windows and lib1-all (or
lib1-common).
* If you have the same sources (described by one ivy.xml file), then you
could define different artifacts for each platform:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra";>
    <info organisation="org.apache.libs" module="lib1" status="integration"
/>
    <configurations>
        <conf name="default" />
        <conf name="dev" />
        <conf name="test" />
        <conf name="report" />
    </configurations>
    <publications>
        <artifact name="lib1" type="bin" conf="default" ext="zip"
e:platform="linux" />
        <artifact name="lib1" type="bin" conf="default" ext="zip"
e:platform="windows" />
    </publications>
</ivy-module>

* Alternatively, you could also split up your configurations into
dev-linux, dev-windows, etc...

Marc

2017-02-22 11:27 GMT+01:00 <michael.fitz...@bmw.de>:

> Hi,
> in the documentation I read about the extra attributes:
>
> "Extra attributes: Those extra attributes will indeed be used as
> identifier for the module like the org the name and the revision:"
>
> https://ant.apache.org/ivy/history/2.1.0/concept.html
>
> We would like to organize the libs for different platforms "x86_64_linux",
> "x86_64_windows" and "all" with an extra attribute. So we created an ivy
> descriptor with the extra attribute e:platform. In the dependencies we want
> to depend on the same module but for a different platform e.g. "all".
>
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra";>
>     <info organisation="org.apache.libs" module="lib1"
> e:platform="x86_64_linux" status="integration" />
>
>     <configurations>
>         <conf name="default" />
>         <conf name="dev" />
>         <conf name="test" />
>         <conf name="report" />
>     </configurations>
>
>     <publications>
>         <artifact name="lib1" type="bin" conf="default" ext="zip" />
>     </publications>
>
>     <dependencies>
>         <dependency org="org.apache.libs" name="lib1" e:platform="all"
> rev="last.integration"/>
>     </dependencies>
> </ivy-module>
>
> While the ivy:retrieve step we get following error message:
>
> java.lang.IllegalArgumentException: a module is not authorized to depend
> on itself: org.apache.libs#lib1#master;last.integration
> at org.apache.ivy.core.resolve.IvyNodeCallers.addCaller(
> IvyNodeCallers.java:166)
> at org.apache.ivy.core.resolve.IvyNode.addCaller(IvyNode.java:1076)
> at org.apache.ivy.core.resolve.IvyNode.getDependencies(IvyNode.java:372)
> at org.apache.ivy.core.resolve.VisitNode.getDependencies(
> VisitNode.java:313)
> at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(
> ResolveEngine.java:796)
> at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(
> ResolveEngine.java:726)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(
> ResolveEngine.java:599)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(
> ResolveEngine.java:236)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(
> ResolveEngine.java:197)
> at org.apache.ivy.Ivy.resolve(Ivy.java:508)
>
> The question is if ivy should support a combination of org - module -
> e:platform to uniquely  identify depending SW component - also if the same
> module name exists twice?
>
> Thanks
> Michael
>

Reply via email to