tbroyer / gwt-maven-plugin

Starting fresh on building GWT projects with Maven
https://tbroyer.github.io/gwt-maven-plugin/
Apache License 2.0
167 stars 39 forks source link

Cannot compile GWT project using com.google.gwt:2.10.0-new-groupid-2 #152

Closed gardellajuanpablo closed 2 years ago

gardellajuanpablo commented 2 years ago

Thread details: https://groups.google.com/g/Google-Web-Toolkit-Contributors/c/ClpaaOQUukQ/m/M2LZya52DAAJ

It was tested with Maven 3.6.5 and Maven 3.8.5 and it has the same error. Stacktrace:

Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
...
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:184)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NoSuchMethodError: org.codehaus.plexus.util.DirectoryScanner.setFilenameComparator(Ljava/util/Comparator;)V
    at org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection.getResources (PlexusIoFileResourceCollection.java:250)
    at org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext (AbstractArchiver.java:561)
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain (AbstractZipArchiver.java:223)
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.execute (AbstractZipArchiver.java:201)
    at org.codehaus.plexus.archiver.AbstractArchiver.createArchive (AbstractArchiver.java:1063)
    at org.apache.maven.archiver.MavenArchiver.createArchive (MavenArchiver.java:680)
    at net.ltgt.gwt.maven.PackageAppMojo.execute (PackageAppMojo.java:85)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:127)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR] 
tbroyer commented 2 years ago

I cannot reproduce, with either 3.8.4 (what I have locally), 3.8.5 or 3.6.3 (both from Docker). Can you share a reproducer?

From the stacktrace, it would probably mean there's some incompatibility between Plexus IO and Plexus Utils. The call to setFilenameComparator was added 3 years ago and shipped in plexus-io 3.2.0: https://github.com/codehaus-plexus/plexus-io/commit/bff7c5ec913c701919dd800d430ef0b0147ee6d1 (and hasn't changed since then) Same for the method itself in plexus-utils, shipped in 3.3.0 and not changed since then: https://github.com/codehaus-plexus/plexus-utils/commit/5e238665d008f99db4766ffba882d306b20d0fe0 This would mean you somehow have an older plexus-utils version. Maven 3.6.3 indeed comes with plexus-utils 3.2.1, but somehow I cannot reproduce, which means that plexus-utils 3.4.1 from the plugin is being used.

Are you maybe not using the plugin's gwt-app packaging, and thus not using <extensions>true</extensions>, and that could possibly change the way Maven sets up class loaders? A reproducer would greatly help.

gardellajuanpablo commented 2 years ago

Attached a reproducer. Thanks! sample.tar.gz

tbroyer commented 2 years ago

Just looking at the code before running it, I'd say this is likely due to:

          <dependencies>
            <!-- Code Server's Process Still Running After Stopping the maven launcher ( CTRL + C ) #110 -->
            <!-- https://github.com/tbroyer/gwt-maven-plugin/issues/110 -->
            <dependency>
              <groupId>org.codehaus.plexus</groupId>
              <artifactId>plexus-utils</artifactId>
              <version>3.0.16</version>
            </dependency>
          </dependencies>
gardellajuanpablo commented 2 years ago

Removed that dependency solved the problem. I suppose we can close this issue.