Skip to content

[#11449] Fix Mockito agent: use late binding @{} interpolation (backport to 4.0.x)#12415

Merged
gnodet merged 1 commit into
apache:maven-4.0.xfrom
gnodet:backport/12369-mockito-late-binding
Jul 3, 2026
Merged

[#11449] Fix Mockito agent: use late binding @{} interpolation (backport to 4.0.x)#12415
gnodet merged 1 commit into
apache:maven-4.0.xfrom
gnodet:backport/12369-mockito-late-binding

Conversation

@gnodet

@gnodet gnodet commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Backport of #12369 to maven-4.0.x.

The mockito profile used Maven property interpolation (${...}) which resolves at POM parse time — before the dependency:properties goal runs and sets the org.mockito:mockito-core:jar property. This caused the javaagent path to remain unresolved.

Fix: use Surefire/Failsafe late-binding property interpolation (@{...}) which resolves the property at test execution time, after dependency:properties has already set it.

Also:

  • Restore @{jacocoArgLine} placeholder
  • Extend the profile to cover maven-failsafe-plugin as well

Cherry-picked from 6f46443 (master).

Fixes: #11449

…and extend to failsafe plugin (apache#12369)

* [MNG-11449] Fix Mockito agent: use late binding @{} interpolation and extend to failsafe plugin

The mockito profile activated by dependency:properties used Maven property
interpolation (\) which resolves at POM parse time - before the
dependency:properties goal runs and sets the org.mockito:mockito-core:jar
property. This caused the javaagent path to remain unresolved.

Fix: use Surefire/Failsafe late-binding property interpolation (@{...})
which resolves the property at test execution time, after dependency:properties
has already set it.

Also:
- Restore @{jacocoArgLine} placeholder (was dropped in previous attempt)
- Extend the profile to cover maven-failsafe-plugin as well

Fixes: https://issues.apache.org/jira/browse/MNG-11449

* [MNG-11449] Fix Mockito agent profile collision with JaCoCo profile

When both jacoco and mockito profiles were active, the jacoco profile's surefire configuration overrode the mockito profile's surefire pluginManagement configuration. This caused the mockito javaagent to be silently dropped for unit tests.

Fix: Refactor the surefire and failsafe argLine to be composed dynamically via properties:
- Define argLine.xmx (default: -Xmx256m) and argLine.mockito (default: empty) in the root POM properties.
- Update default pluginManagement configuration for surefire/failsafe to: \ @{jacocoArgLine} \
- Modify the mockito profile to only set argLine.mockito property to the mockito javaagent.
- Modify the jacoco profile to only override argLine.xmx property to -Xmx1G and remove the direct surefire argLine override.

This ensures both profiles can be active simultaneously without overriding each other's configurations.
@gnodet gnodet added bug Something isn't working backport mvn40 labels Jul 3, 2026
@gnodet gnodet added this to the 4.0.0-rc-6 milestone Jul 3, 2026
@gnodet gnodet merged commit 3c97cf0 into apache:maven-4.0.x Jul 3, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport bug Something isn't working mvn40

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants