You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Robert Scholte (Jira)" <ji...@apache.org> on 2022/02/08 09:57:00 UTC

[jira] [Commented] (SUREFIRE-1993) Failsafe fails to detect module dependencies

    [ https://issues.apache.org/jira/browse/SUREFIRE-1993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17488712#comment-17488712 ] 

Robert Scholte commented on SUREFIRE-1993:
------------------------------------------

By default if a module consumes (uses) a services, its service providers are not included. This makes sense for compilation: you're not interested in implementation details. 
However, for failsafe it makes sense to include these service providers. You can achieve this by calling {{ResolvePathsRequest.setIncludeAllProviders( true )}} (as already discovered by [~mthmulders])

> Failsafe fails to detect module dependencies
> --------------------------------------------
>
>                 Key: SUREFIRE-1993
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1993
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Maven Failsafe Plugin
>    Affects Versions: 3.0.0-M5
>         Environment: Java 17
> Maven 4.0.0-alpha-SNAPSHOT and 3.8.4
>            Reporter: Maarten Mulders
>            Priority: Minor
>         Attachments: reproducer.zip
>
>
> Please see the attached project. It has three Maven modules, each defining its own JPMS module. The *application* module depends on an interface from the *studentservice* module, and the implementation for that interface lives in {*}studentservice-provider{*}. The {{module-info.java}} for the *studentservice-provider* module declares the implementation of that interface.
> When you run the application using {{{}./manually.sh{}}}, it correctly loads the *studentservice-provider* module. When you run the IT, it does not.
> The application prints the module path to standard out.
> From the test script it prints:
> {code:java}
> application/target/application-1.jar
> studentservice/target/studentservice-1.jar
> studentservice-provider/target/studentservice-provider-1.jar{code}
> From the integration test, which starts the same application, it prints:
> {code:java}
> application/target/application-1.jar
> studentservice/target/studentservice-1.jar{code}
>  
> Note how in the integration test the *studentservice-provider* is missing in the output.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)