[ 
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)

Reply via email to