jira.codehaus.org

  • Log In Access more options
    • Online Help
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What?s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
  • Maven 2 & 3
  • MNG-1568

test-jar dependency clobbers transitive dependency

  • Log In
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Duplicate
  • Affects Version/s: 2.0
  • Fix Version/s: None
  • Component/s: Plugins and Lifecycle
  • Labels:
    None
  • Environment:
    Hide
    Linux 2.6.10-gentoo-r4 #1 SMP Mon Jan 10 14:53:56 EST 2005 i686 AMD Athlon(tm) MP 2400+ AuthenticAMD GNU/Linux
    java version "1.4.2_09"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-b05)
    Java HotSpot(TM) Client VM (build 1.4.2_09-b05, mixed mode)
    Show
    Linux 2.6.10-gentoo-r4 #1 SMP Mon Jan 10 14:53:56 EST 2005 i686 AMD Athlon(tm) MP 2400+ AuthenticAMD GNU/Linux java version "1.4.2_09" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_09-b05) Java HotSpot(TM) Client VM (build 1.4.2_09-b05, mixed mode)
  • Complexity:
    Intermediate

Description

Specifying a test-jar dependency clobbers any transitive dependency on
that project.

eg

projectA publishes jar and test-jar
projectB depends on projectA.jar (scope compile)
projectC depends on projectB.jar (scope compile) and projectA.test-jar
(scope test)

In projectC, the test scoped projectA.test-jar dependency effectively
clobbers the compile scoped transitive dependency on projectA.jar. ie
projectA.jar is no longer in projectC's compile scope dependency list.

If I explicitly specify the projectA.jar compile dependency in the projectC POM it is resolved correctly.

There are currently other issues with test-jar dependency
resolution that may be related.

MNG-1378 <http://jira.codehaus.org/browse/MNG-1378>

According to Brett "It shouldn't be clobbered, as
the conflict ID for a dependency is group:artifact:type:classifier" but this isn't what I am seeing.

  • Options
    • Sort By Name
    • Sort By Date
    • Ascending
    • Descending
    • Download All

Attachments

  1. GZip Archive
    itMNG1568.tar.gz
    20/Nov/05 7:15 PM
    11 kB
    Andrew Moore

Issue Links

duplicates

Bug - A problem which impairs or prevents the functions of the product. MNG-1895 Dependencies in two paths are not added to resolution when scope needs to be updated in the nearest due to any of nearest parents

  • Blocker - Blocks development and/or testing work, production could not run
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.
is duplicated by

Bug - A problem which impairs or prevents the functions of the product. MNG-1823 dependencies with classifier mask transitive dependencies of same dependency without classifier

  • Major - Major loss of function.
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.
is related to

Bug - A problem which impairs or prevents the functions of the product. MNG-1571 Wrong calculation of transient dependecies if artifact is referenced from different scopes

  • Major - Major loss of function.
  • Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.

Activity

Ascending order - Click to sort in descending order
  • All
  • Comments
  • Work Log
  • History
  • Activity
Hide
Permalink
Andrew Moore added a comment - 20/Nov/05 7:15 PM

Here is a test case exhibiting this behaviour.

Based on it0077.

sub1 produces sub1.jar and sub1-test.jar
sub2 produces sub2.jar and sub2-test.jar
sub3 produces sub3.jar and sub3-test.jar
sub4 produces sub4.jar and sub4-test.jar

sub2 depends on sub1 scope compile
sub3 depends on sub2 and transitavely depends on sub1 scope compile
sub4 depends on sub3 and transitavely depends on sub1 and sub2 scope compile
sub4 additionally depends on sub2-test scope test

In sub4, if the sub2-test scope test dependency is omitted, testCompile fails as expected.
In sub4, if the sub2-test scope test dependency is included, compile fails due to the transitive dependency on sub1 being clobbered.

Show
Andrew Moore added a comment - 20/Nov/05 7:15 PM Here is a test case exhibiting this behaviour. Based on it0077. sub1 produces sub1.jar and sub1-test.jar sub2 produces sub2.jar and sub2-test.jar sub3 produces sub3.jar and sub3-test.jar sub4 produces sub4.jar and sub4-test.jar sub2 depends on sub1 scope compile sub3 depends on sub2 and transitavely depends on sub1 scope compile sub4 depends on sub3 and transitavely depends on sub1 and sub2 scope compile sub4 additionally depends on sub2-test scope test In sub4, if the sub2-test scope test dependency is omitted, testCompile fails as expected. In sub4, if the sub2-test scope test dependency is included, compile fails due to the transitive dependency on sub1 being clobbered.
Hide
Permalink
Brett Porter added a comment - 21/Nov/05 12:10 AM

sounds to me like sub2-test is being incorrectly selected instead of sub2 and that sub2-test has no dependencies.

Instead, both should be selected independantly, and all dependencies included using the appropriate scope mediation (admittedly, this is not always correct as listed in MNG-1378, but its what is expected for the 2.0.x series)

Show
Brett Porter added a comment - 21/Nov/05 12:10 AM sounds to me like sub2-test is being incorrectly selected instead of sub2 and that sub2-test has no dependencies. Instead, both should be selected independantly, and all dependencies included using the appropriate scope mediation (admittedly, this is not always correct as listed in MNG-1378, but its what is expected for the 2.0.x series)
Hide
Permalink
Andrew Moore added a comment - 21/Nov/05 6:52 PM

I have been playing around with the attached test case and can now reliably make it pass or fail depending upon the order in which I run the commands.

I run two configurations:
test - sub4/pom.xml includes sub2-test and PersonFourTest extends PersonTwoTest
notest - sub4/pom.xml does NOT include sub2-test and PersonFourTest extends Object

notest: mvn clean:clean install PASS
test: mvn clean:clean install FAIL

So far, so good. Now,

notest: mvn clean:clean install PASS
test: mvn install PASS

When I modify sub4/pom.xml, to add the sub2-test dependency, and do not clean, a regular compile is not triggered. The existing sub4 classes are used and everything 'works'.

This had me going for a while as sometimes my test would pass and othertimes it would fail.

Is this the expected behaviour? Should the compile plugin be aware of project metadata (the dependencies in this case) and that a change in metadata may require recompilation?

Show
Andrew Moore added a comment - 21/Nov/05 6:52 PM I have been playing around with the attached test case and can now reliably make it pass or fail depending upon the order in which I run the commands. I run two configurations: test - sub4/pom.xml includes sub2-test and PersonFourTest extends PersonTwoTest notest - sub4/pom.xml does NOT include sub2-test and PersonFourTest extends Object notest: mvn clean:clean install PASS test: mvn clean:clean install FAIL So far, so good. Now, notest: mvn clean:clean install PASS test: mvn install PASS When I modify sub4/pom.xml, to add the sub2-test dependency, and do not clean, a regular compile is not triggered. The existing sub4 classes are used and everything 'works'. This had me going for a while as sometimes my test would pass and othertimes it would fail. Is this the expected behaviour? Should the compile plugin be aware of project metadata (the dependencies in this case) and that a change in metadata may require recompilation?
Hide
Permalink
Brett Porter added a comment - 22/Nov/05 8:01 PM

could be a duplicate

Show
Brett Porter added a comment - 22/Nov/05 8:01 PM could be a duplicate
Hide
Permalink
Carlos Sanchez added a comment - 28/May/06 1:21 PM

I think this is a dupe of MNG-1895

Show
Carlos Sanchez added a comment - 28/May/06 1:21 PM I think this is a dupe of MNG-1895

People

  • Assignee:
    Carlos Sanchez
    Reporter:
    Andrew Moore
Vote (0)
Watch (3)

Dates

  • Created:
    14/Nov/05 10:31 PM
    Updated:
    21/Nov/10 10:03 AM
    Resolved:
    28/May/06 1:23 PM
  • Atlassian JIRA (v5.0.4#731-sha1:3aa7374)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for Codehaus. Try JIRA - bug tracking software for your team.