Uploaded image for project: 'Maven Shade Plugin'
  1. Maven Shade Plugin
  2. MSHADE-284

Shaded test JARs are always empty

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.1.0
    • 3.2.2
    • None
    • Patch

    Description

      Shading test JARs using the shadeTestJar configuration option yields an empty test JAR. This has been noticed by others, see for example Steve K's answer on StackOverflow, but people have reverted to other hacks and workarounds to overcome this (e.g. use a different plugin).

      Scenario:

      1. Create modules api, impl and a module uber which has as sole purpose to make an uber JAR for the combination of the first two modules. uber itself has no sources.
      2. Both modules have both jar and test-jar artifacts.
      3. Configure the maven-shade-plugin in the uber module with the configuration option shadeTestJar set to true.

      Expected:

      1. Content of uber.jar is the aggregate content of api.jar and impl.jar.
      2. Content of uber-tests.jar is the aggregate content of api-tests.jar and impl-tests.jar.

      Actual:

      1. Content of uber.jar is as expected.
      2. uber-tests.jar is empty.

      Root cause:

      • The implementation of the shadeTestJar feature in ShaderMojo is buggy and incomplete.
      • The call to processArtifactSelectors on line 425 doesn't pass the testArtifacts, so they are never correctly filled in.
      • The implementation of processArtifactSelectors doesn't deal with test JARs at all and has to be extended to support them.
      • The "if" statement on line 452 incorrectly treats a test JAR as sources.

      This whole feature looks like it was done in a hurry as a sloppy copy-paste job, and in 5 years nobody took the time to report or fix it. Amazing. Anyway, you can find my proposed fix in attachment: shadeTestJar.patch. I have tested it manually on my project and it works.

      Attachments

        1. shadeTestJar.patch
          4 kB
          Peter De Maeyer

        Issue Links

          Activity

            People

              struberg Mark Struberg
              peterdm Peter De Maeyer
              Votes:
              3 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10m
                  10m