diff --git a/src/main/java/org/openrewrite/maven/MavenMojoProjectParser.java b/src/main/java/org/openrewrite/maven/MavenMojoProjectParser.java index c5b2f903..7b688a78 100644 --- a/src/main/java/org/openrewrite/maven/MavenMojoProjectParser.java +++ b/src/main/java/org/openrewrite/maven/MavenMojoProjectParser.java @@ -31,6 +31,7 @@ import org.apache.maven.settings.crypto.SettingsDecryptionRequest; import org.apache.maven.settings.crypto.SettingsDecryptionResult; import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.jetbrains.annotations.NotNull; import org.jspecify.annotations.Nullable; import org.openrewrite.ExecutionContext; import org.openrewrite.ParseExceptionResult; @@ -388,16 +389,16 @@ private Stream processMainSources( // Some annotation processors output generated sources to the /target directory. These are added for parsing but // should be filtered out of the final SourceFile list. List generatedSourcePaths = listJavaSources(mavenProject.getBasedir().toPath().resolve(mavenProject.getBuild().getDirectory())); + String mavenSourceDirectory = mavenProject.getBuild().getSourceDirectory(); List mainJavaSources = Stream.concat( generatedSourcePaths.stream(), - listJavaSources(mavenProject.getBasedir().toPath().resolve(mavenProject.getBuild().getSourceDirectory())).stream() + listJavaSources(mavenProject.getBasedir().toPath().resolve(mavenSourceDirectory)).stream() ).collect(toList()); alreadyParsed.addAll(mainJavaSources); // scan Kotlin files - String kotlinSourceDir = getKotlinDirectory(mavenProject.getBuild().getSourceDirectory()); - List mainKotlinSources = listKotlinSources(mavenProject.getBasedir().toPath().resolve(kotlinSourceDir != null ? kotlinSourceDir : mavenProject.getBuild().getSourceDirectory())); + List mainKotlinSources = listKotlinSources(mavenProject, mavenSourceDirectory); alreadyParsed.addAll(mainKotlinSources); logInfo(mavenProject, "Parsing source files"); @@ -465,8 +466,8 @@ private Stream processTestSources( alreadyParsed.addAll(testJavaSources); // scan Kotlin files - String kotlinTestSourceDir = getKotlinDirectory(mavenProject.getBuild().getTestSourceDirectory()); - List testKotlinSources = listKotlinSources(mavenProject.getBasedir().toPath().resolve(kotlinTestSourceDir != null ? kotlinTestSourceDir : mavenProject.getBuild().getTestSourceDirectory())); + String mavenTestSourceDirectory = mavenProject.getBuild().getTestSourceDirectory(); + List testKotlinSources = listKotlinSources(mavenProject, mavenTestSourceDirectory); alreadyParsed.addAll(testKotlinSources); Stream parsedJava = Stream.empty(); @@ -489,10 +490,15 @@ private Stream processTestSources( int sourcesParsedBefore = alreadyParsed.size(); Stream parsedResourceFiles = resourceParser.parse(mavenProject.getBasedir().toPath().resolve("src/test/resources"), alreadyParsed); logDebug(mavenProject, "Scanned " + (alreadyParsed.size() - sourcesParsedBefore) + " resource files in test scope."); - return Stream.concat(Stream.concat(parsedJava, kotlinParserBuilder.build().parse(testKotlinSources, baseDir, ctx)), parsedResourceFiles) + return Stream.concat(Stream.concat(parsedJava, parsedKotlin), parsedResourceFiles) .map(addProvenance(baseDir, markers, null)); } + private @NotNull List listKotlinSources(MavenProject mavenProject, String fallbackSourceDirectory) throws MojoExecutionException { + String kotlinSourceDir = getKotlinDirectory(fallbackSourceDirectory); + return listSources(mavenProject.getBasedir().toPath().resolve(kotlinSourceDir != null ? kotlinSourceDir : fallbackSourceDirectory), ".kt"); + } + private @Nullable String getKotlinDirectory(@Nullable String sourceDirectory) { if (sourceDirectory == null) { return null; @@ -760,10 +766,6 @@ private static List listJavaSources(Path sourceDirectory) throws MojoExecu return listSources(sourceDirectory, ".java"); } - private static List listKotlinSources(Path sourceDirectory) throws MojoExecutionException { - return listSources(sourceDirectory, ".kt"); - } - private static List listSources(Path sourceDirectory, String extension) throws MojoExecutionException { if (!Files.exists(sourceDirectory)) { return emptyList();