adambkaplan opened a new issue, #3248:
URL: https://github.com/apache/maven-surefire/issues/3248

   ### Affected version
   
   3.5.4
   
   ### Bug description
   
   # Description
   
   I have a project that is set up to use JUnit 5 and the Maven Surefire 
plugin, per the [official 
documentation](https://maven.apache.org/surefire/maven-surefire-plugin/examples/junit-platform.html).
   When trying to simulate a pre-fetched "offline build" workflow, builds that 
run tests fail because the Surefire plugin attempts to dynamically download the 
`surefire-junit-platform` JAR as a dependency.
   
   # Expected Behavior
   
   Surefire plugin declares all necessary dependencies for `go-offline` (and 
similar tools/plugins) to work, and/or the documentation provides necessary 
instructions for all dependencies to be declared up front.
   
   # Actual Behavior
   
   Build fails:
   
   ```sh
   $ mvn clean package -o -Dmaven.repo.local=tmp-local
   ....
   [INFO] --- surefire:3.5.4:test (default-test) @ single-module ---
   [INFO] Using auto detected provider 
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
   [WARNING] The POM for 
org.apache.maven.surefire:surefire-junit-platform:jar:3.5.4 is missing, no 
dependency information available
   [INFO] 
------------------------------------------------------------------------
   [INFO] BUILD FAILURE
   [INFO] 
------------------------------------------------------------------------
   [INFO] Total time:  0.748 s
   [INFO] Finished at: 2026-01-28T15:20:37-05:00
   [INFO] 
------------------------------------------------------------------------
   [ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test (default-test) on 
project single-module: The following artifacts could not be resolved: 
org.apache.maven.surefire:surefire-junit-platform:jar:3.5.4 (absent): Cannot 
access central (https://repo.maven.apache.org/maven2) in offline mode and the 
artifact org.apache.maven.surefire:surefire-junit-platform:jar:3.5.4 has not 
been downloaded from it before. -> [Help 1]
   ```
   
   # Reproducer
   
   Using the "Hello World" example 
[here](https://github.com/adambkaplan/hermetoproject-integration-tests/tree/maven/single-module),
 run the following:
   
   ```sh
   $ mvn org.apache.maven.plugins:maven-dependency-plugin:3.9.0:go-offline 
-Dmaven.repo.local=tmp-local
   ...
   $ mvn clean package -o -Dmaven.repo.local=tmp-local
   ```
   
   # Workaround
   
   No clear workaround - adding the missing JAR as a plugin dependency leads to 
"classpath hell."
   
   `pom.xml`:
   
   ```xml
       <dependencies>
           <dependency>
               <groupId>org.junit.jupiter</groupId>
               <artifactId>junit-jupiter-engine</artifactId>
               <version>5.11.0</version>
               <scope>test</scope>
           </dependency>
       </dependencies>
   
   ...
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-surefire-plugin</artifactId>
                   <version>3.5.4</version>
                   <dependencies>
                       <dependency>
                           <groupId>org.apache.maven.surefire</groupId>
                           <artifactId>surefire-junit-platform</artifactId>
                           <version>3.5.4</version>
                       </dependency>
                   </dependencies>
               </plugin>
   ```
   
   Result:
   
   ```sh
   [ERROR] There was an error in the forked process
   [ERROR] org.junit.platform.commons.JUnitException: The wrapped 
NoClassDefFoundError is likely caused by the versions of JUnit jars on the 
classpath/module path not being properly aligned. 
   [ERROR] Please ensure consistent versions are used (see 
https://junit.org/junit5/docs/5.12.1/user-guide/#dependency-metadata).
   [ERROR] The following conflicting versions were detected:
   [ERROR] - org.junit.platform.commons: 1.11.0
   [ERROR] - org.junit.platform.engine: 1.11.0
   [ERROR] - org.junit.platform.launcher: 1.12.1
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to