Skip to content

Conversation

@gnodet
Copy link
Contributor

@gnodet gnodet commented Oct 26, 2025

Resolves issue #11292 where Maven shows '[unknown project]' in error messages when using -e -X flags, particularly in CI environments.

Problem

The issue occurred because DefaultProjectBuilder was creating DefaultProjectBuildingResult with null project information when ModelBuilderResult.getEffectiveModel() returned null, resulting in empty projectId and causing ProjectBuildingException.createMessage() to display '[unknown project]' as a fallback.

Solution

This fix extracts project identification from available model data (rawModel or fileModel) when effectiveModel is null, following the same pattern used in ModelBuilderException.getModelId().

Changes

  • Added extractProjectId() helper method that falls back to rawModel or fileModel when effectiveModel is null
  • Modified project building result creation to use extracted projectId and POM file information instead of null values
  • Maintains backward compatibility: when all models are null, still returns empty string to preserve '[unknown project]' fallback for truly unknown projects
  • Added comprehensive unit tests to verify the fallback behavior

Benefits

Testing

The fix includes unit tests that verify:

  1. Normal case: When effectiveModel is available, use it (no change in behavior)
  2. Fallback to rawModel: When effectiveModel is null but rawModel is available, extract ID from rawModel
  3. Fallback to fileModel: When both effectiveModel and rawModel are null but fileModel is available, extract ID from fileModel
  4. All models null: When all models are null, return empty string (preserves existing fallback behavior)

Fixes #11292


Pull Request opened by Augment Code with guidance from the PR author

@gnodet gnodet added bug Something isn't working backport-to-4.0.x labels Oct 26, 2025
@gnodet gnodet force-pushed the fix-unknown-project-issue-11292 branch from a886342 to b5b3203 Compare October 26, 2025 20:40
@gnodet gnodet requested a review from cstamas October 27, 2025 09:11
Resolves issue apache#11292 where Maven shows '[unknown project]' in error
messages when using -e -X flags, particularly in CI environments.

The issue occurred because DefaultProjectBuilder was creating
DefaultProjectBuildingResult with null project information when
ModelBuilderResult.getEffectiveModel() returned null, resulting in
empty projectId and causing ProjectBuildingException.createMessage()
to display '[unknown project]' as a fallback.

This fix extracts project identification from available model data
(rawModel or fileModel) when effectiveModel is null, following the
same pattern used in ModelBuilderException.getModelId().

Changes:
- Added extractProjectId() helper method that falls back to rawModel
  or fileModel when effectiveModel is null
- Modified project building result creation to use extracted projectId
  and POM file information instead of null values
- Maintains backward compatibility: when all models are null, still
  returns empty string to preserve '[unknown project]' fallback for
  truly unknown projects

This provides better error messages showing meaningful project
identification like 'com.example:my-project:jar:1.0.0' even when
project building fails, while maintaining existing error handling
patterns.
Tests verify the fallback behavior when extracting project identification
from ModelBuilderResult:
- Falls back to rawModel when effectiveModel is null
- Falls back to fileModel when both effectiveModel and rawModel are null
- Returns empty string when all models are null

These tests ensure the fix for issue apache#11292 works correctly and maintains
backward compatibility.
@gnodet gnodet force-pushed the fix-unknown-project-issue-11292 branch from b5b3203 to 4ec38f8 Compare October 28, 2025 13:05
@gnodet gnodet merged commit cb5ee55 into apache:master Oct 28, 2025
37 of 38 checks passed
@github-actions github-actions bot added this to the 4.1.0 milestone Oct 28, 2025
gnodet added a commit to gnodet/maven that referenced this pull request Oct 28, 2025
Resolves issue apache#11292 where Maven shows '[unknown project]' in error
messages when using -e -X flags, particularly in CI environments.

The issue occurred because DefaultProjectBuilder was creating
DefaultProjectBuildingResult with null project information when
ModelBuilderResult.getEffectiveModel() returned null, resulting in
empty projectId and causing ProjectBuildingException.createMessage()
to display '[unknown project]' as a fallback.

This fix extracts project identification from available model data
(rawModel or fileModel) when effectiveModel is null, following the
same pattern used in ModelBuilderException.getModelId().

Changes:
- Added extractProjectId() helper method that falls back to rawModel
  or fileModel when effectiveModel is null
- Modified project building result creation to use extracted projectId
  and POM file information instead of null values
- Maintains backward compatibility: when all models are null, still
  returns empty string to preserve '[unknown project]' fallback for
  truly unknown projects

This provides better error messages showing meaningful project
identification like 'com.example:my-project:jar:1.0.0' even when
project building fails, while maintaining existing error handling
patterns.

(cherry picked from commit cb5ee55)
@gnodet
Copy link
Contributor Author

gnodet commented Oct 28, 2025

💚 All backports created successfully

Status Branch Result
maven-4.0.x

Questions ?

Please refer to the Backport tool documentation

gnodet added a commit that referenced this pull request Oct 28, 2025
Resolves issue #11292 where Maven shows '[unknown project]' in error
messages when using -e -X flags, particularly in CI environments.

The issue occurred because DefaultProjectBuilder was creating
DefaultProjectBuildingResult with null project information when
ModelBuilderResult.getEffectiveModel() returned null, resulting in
empty projectId and causing ProjectBuildingException.createMessage()
to display '[unknown project]' as a fallback.

This fix extracts project identification from available model data
(rawModel or fileModel) when effectiveModel is null, following the
same pattern used in ModelBuilderException.getModelId().

Changes:
- Added extractProjectId() helper method that falls back to rawModel
  or fileModel when effectiveModel is null
- Modified project building result creation to use extracted projectId
  and POM file information instead of null values
- Maintains backward compatibility: when all models are null, still
  returns empty string to preserve '[unknown project]' fallback for
  truly unknown projects

This provides better error messages showing meaningful project
identification like 'com.example:my-project:jar:1.0.0' even when
project building fails, while maintaining existing error handling
patterns.

(cherry picked from commit cb5ee55)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-to-4.0.x bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Strange output '[unknown project]' in maven output when using -e -X, maybe related to issue #11109 and pull #11178

2 participants