Skip to content

Commit cdba85e

Browse files
committed
test
1 parent 6dda964 commit cdba85e

1 file changed

Lines changed: 29 additions & 35 deletions

File tree

src/Microsoft.ComponentDetection.Detectors/maven/MvnCliComponentDetector.cs

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,6 @@ private async Task<IObservable<ProcessRequest>> RunMavenCliDetectionAsync(
287287

288288
var pomFile = processRequest.ComponentStream;
289289
var pomDir = Path.GetDirectoryName(pomFile.Location);
290-
var depsFileName = this.mavenCommandService.BcdeMvnDependencyFileName;
291-
var depsFilePath = Path.Combine(pomDir, depsFileName);
292290

293291
// Generate dependency file using Maven CLI.
294292
var result = await this.mavenCommandService.GenerateDependenciesFileAsync(
@@ -297,37 +295,7 @@ private async Task<IObservable<ProcessRequest>> RunMavenCliDetectionAsync(
297295

298296
if (result.Success)
299297
{
300-
// CLI succeeded - read the generated deps file
301-
// We read the file here (rather than in MavenCommandService) to avoid
302-
// unnecessary I/O for callers that scan for files later.
303-
string depsFileContent = null;
304-
if (this.fileUtilityService.Exists(depsFilePath))
305-
{
306-
depsFileContent = this.fileUtilityService.ReadAllText(depsFilePath);
307-
}
308-
309-
if (!string.IsNullOrEmpty(depsFileContent))
310-
{
311-
Interlocked.Increment(ref cliSuccessCount);
312-
results.Add(new ProcessRequest
313-
{
314-
ComponentStream = new ComponentStream
315-
{
316-
Stream = new MemoryStream(Encoding.UTF8.GetBytes(depsFileContent)),
317-
Location = depsFilePath,
318-
Pattern = depsFileName,
319-
},
320-
SingleFileComponentRecorder = this.ComponentRecorder.CreateSingleFileComponentRecorder(
321-
Path.Combine(pomDir, MavenManifest)),
322-
});
323-
}
324-
else
325-
{
326-
// CLI reported success but deps file is missing or empty - treat as failure
327-
Interlocked.Increment(ref cliFailureCount);
328-
failedDirectories.Add(pomDir);
329-
this.LogWarning($"Maven CLI succeeded but deps file not found or empty: {depsFilePath}");
330-
}
298+
Interlocked.Increment(ref cliSuccessCount);
331299
}
332300
else
333301
{
@@ -376,9 +344,35 @@ await this.RemoveNestedPomXmls(processRequests, cancellationToken).ForEachAsync(
376344
// Determine detection method based on results
377345
this.DetermineDetectionMethod(cliSuccessCount, cliFailureCount);
378346

379-
this.LogDebug($"Maven CLI processing complete: {cliSuccessCount} succeeded, {cliFailureCount} failed out of {this.originalPomFiles.Count} root pom.xml files.");
347+
this.LogDebug($"Maven CLI processing complete: {cliSuccessCount} succeeded, {cliFailureCount} failed out of {this.originalPomFiles.Count} root pom.xml files. Retrieving generated dependency graphs.");
348+
349+
// Use original MvnCliComponentDetector approach: scan entire source directory for ALL generated dependency files
350+
// This ensures we find dependency files from submodules even if Maven CLI was only run on parent pom.xml
351+
var allGeneratedDependencyFiles = this.ComponentStreamEnumerableFactory
352+
.GetComponentStreams(
353+
this.CurrentScanRequest.SourceDirectory,
354+
[this.mavenCommandService.BcdeMvnDependencyFileName],
355+
this.CurrentScanRequest.DirectoryExclusionPredicate)
356+
.Select(componentStream =>
357+
{
358+
// Read and store content to avoid stream disposal issues
359+
using var reader = new StreamReader(componentStream.Stream);
360+
var content = reader.ReadToEnd();
361+
return new ProcessRequest
362+
{
363+
ComponentStream = new ComponentStream
364+
{
365+
Stream = new MemoryStream(Encoding.UTF8.GetBytes(content)),
366+
Location = componentStream.Location,
367+
Pattern = componentStream.Pattern,
368+
},
369+
SingleFileComponentRecorder = this.ComponentRecorder.CreateSingleFileComponentRecorder(
370+
Path.Combine(Path.GetDirectoryName(componentStream.Location), MavenManifest)),
371+
};
372+
});
380373

381-
return results.ToObservable();
374+
// Combine dependency files from CLI success with pom.xml files from CLI failures
375+
return results.Concat(allGeneratedDependencyFiles).ToObservable();
382376
}
383377

384378
protected override Task OnFileFoundAsync(

0 commit comments

Comments
 (0)