Uploaded image for project: 'Maven Surefire'
  1. Maven Surefire
  2. SUREFIRE-1501

Optional dependencies not correctly handled with JPMS modules

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments


    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.21.0
    • None
    • Maven Surefire Plugin
    • None
    • Windows 10, Maven v3.5.2


      Attached is a pointlessly simple project for Java 9. The module-info declares an optional dependency on Google Guava (an automatic module) using requires static. This optionality is reflected in the pom.xml, where the dependency is marked as optional.

      It fails in surefire with JAVA_HOME=jdk9. The reason seems to be that although the Guava jar file is added to the modulepath, it is not referenced using --add-modules. As such, the module graph builder never pulls it in, despite it being on the modulepath. (Optional dependencies need to be directly added using --add-modules if in Maven's dependency graph)

      Adding the --add-modules to the `argLine` parameter solves the problem, but this is a bug because the surefire plugin should handle the situation without manually adding it.

      NOTE! The attachment has the --add-modules manually added to the pom.xml. Remove it to see the bug.



          This comment will be Viewable by All Users Viewable by All Users


            Unassigned Unassigned
            scolebourne@joda.org Stephen Colebourne



              Issue deployment