[ https://issues.apache.org/jira/browse/MCOMPILER-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17798455#comment-17798455 ]
Jorge Solórzano commented on MCOMPILER-567: ------------------------------------------- It looks like only on "some" configurations, the attached IT uses <sourceDirectory> that apparently affects the behavior of plexus-compiler, I tried some other configurations but it seems it's triggered by this, could not fully check why but https://issues.apache.org/jira/browse/MCOMPILER-538 gives me a hint that the generated-sources/annotations directory should not be added to the generated source root. Annotation processors are handled somewhat specially by javac, and it seems is not correct to add the generated-sources to the source list, as adding it to the -s argument is enough. Is hard to provide a failing test since the generated-sources/annotations directory is cleaned but IMO it looks like the fix in https://github.com/apache/maven-compiler-plugin/pull/191/files is correct, I have tested with both changes, and works as expected. And yes, I agree that this should have a higher priority, so we might need to do a 3.12.1 release. > Fail to compile if the "generated-sources/annotations" is not created > --------------------------------------------------------------------- > > Key: MCOMPILER-567 > URL: https://issues.apache.org/jira/browse/MCOMPILER-567 > Project: Maven Compiler Plugin > Issue Type: Bug > Affects Versions: 3.12.0 > Reporter: Jorge Solórzano > Priority: Major > > On some configurations (like a Kotlin project), the cleanup of the > generated-soruces/annotations directory returns an error: > {code:java} > Caused by: java.lang.IllegalStateException: basedir > /maven-compiler-plugin/target/it/MCOMPILER-XX/target/generated-sources/annotations > does not exist > at org.codehaus.plexus.util.DirectoryScanner.scan > (DirectoryScanner.java:268) > at > org.codehaus.plexus.compiler.AbstractCompiler.getSourceFilesForSourceRoot > (AbstractCompiler.java:168) > at org.codehaus.plexus.compiler.AbstractCompiler.getSourceFiles > (AbstractCompiler.java:194) > at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile > (JavacCompiler.java:138) > at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute > (AbstractCompilerMojo.java:1187) > at org.apache.maven.plugin.compiler.CompilerMojo.execute > (CompilerMojo.java:212) > at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo > (DefaultBuildPluginManager.java:126) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 > (MojoExecutor.java:328) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:316) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build > (SingleThreadedBuilder.java:53) > at org.apache.maven.lifecycle.internal.LifecycleStarter.execute > (LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) > at jdk.internal.reflect.DirectMethodHandleAccessor.invoke > (DirectMethodHandleAccessor.java:103) > at java.lang.reflect.Method.invoke (Method.java:580) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:283) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:226) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:407) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:348){code} > > I didn't catch this earlier since I don't use Kotlin and on a normal project, > this should not be an issue since the javac documentation mentions that the > directory, and any necessary subdirectories, will be created if they do not > already exist. > But on a somewhat modified project that compiles kotlin source code, this > triggers an issue on plexus-compiler where the generated-soruces directory > does not exist. > > This might be related to issue MCOMPILER-538, where it claims that generated > source root is not required for javac, but additional confirmation is > required. > > The fix will be to create the generated sources directory to preserve the > current behavior. -- This message was sent by Atlassian Jira (v8.20.10#820010)