Uploaded image for project: 'Ivy'
  1. Ivy
  2. IVY-541

Transitive dependencies resolves incorrectly when different modules uses the same dependency with different configurations in the same build

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.4.1
    • 2.0-RC1
    • Core
    • None
    • NA

    Description

      When modules that uses the same dependencies with different configuration(or different includes) then only the first module that is resolved gets the artifacts that it specifies. The other gets what was last resolved.

      Module A that uses module B.
      Module B uses a build configuration of module C
      Module A uses a build configuration of module C and a runtime configuration
      of module B

      Module B downloads explicit jars from C depending on configuration.

      When I resolve A in build configuration I only get the explicit defined
      runtime jars that B defines for module C.

      Here are snippets of the ivy files.

      Module A:
      ...
      <dependencies>
      <dependency org="myorg" name="B" rev="1.6" conf="build->runtime" />
      <dependency org="myorg" name="C" rev="1.10" conf="build,runtime->default"
      />
      </dependencies>
      ...

      Module B
      ...
      <configurations>
      <conf name="build" visibility="private"/>
      <conf name="runtime"/>
      </configurations>
      <dependencies>
      <dependency org="myorg" name="C" rev="1.10" conf="build,runtime->default">
      <artifact name="art1" type="jar" conf="runtime"/>
      <artifact name="art2" type="jar" conf="runtime"/>
      <artifact name="art3" type="jar" conf="runtime"/>
      </dependency>
      </dependencies>
      ...

      Module C
      ...
      <publications>
      <artifact name="art1" type="jar" conf="default"/>
      <artifact name="art2" type="jar" conf="default"/>
      <artifact name="art3" type="jar" conf="default"/>
      <artifact name="art4" type="jar" conf="default"/>
      </publications>
      ...

      If module A had explicitly added the artifacts that it needed for module C it would have worked fine. The way it should work is that if no specific artifacts are included, the all artifacts for the given configuration should have been included.

      Attachments

        1. IvyNode.java
          60 kB
          Oystein Aadland

        Issue Links

          Activity

            People

              xavier Xavier Hanin
              oaadland Oystein Aadland
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: