Awesome! Thanks Colin. Yes, moving the spring-boot-dependencies from the top level, into the server module, fixes it. 🎉
On Sunday, 15 February 2026 at 4:07:51 am UTC+11 [email protected] wrote: > I am aligned with controlling the transitive dependencies versions on a > top level module, as I faced such complexities and used the same approach, > in groups of solutions. > > Particularly with overlapping dependency chains and SpringBoot , I had to > override the Jetty versions among others in parent Maven modules. > > I am guessing Gradle can do similar but I think it is known for its > fragility in my point of view. > > I hope this helps. > > On Saturday, 14 February 2026 at 15:51:28 UTC Colin Alworth wrote: > >> That's an irritating outcome for sure - though updating GWT to Jetty >> 12.1.5 only punts on the issue, since the next time Spring Boot wants a >> different Jetty version (or some other library) we end up back in this mess >> (though likely with a much more subtle failure mode). >> >> Gradle does a much better job at letting you break up classpaths here, at >> the cost of dramatically increased complexity in the worst case - but it >> could allow you to specify each bom in its own classpath configuration, >> rather than mix the two together. >> >> I think I have a solution that works for your project, but I'm going to >> try to reason it out here a bit, so someone can poke holes in my logic: >> >> - The GWT wiring here is configured for the parent project pom, so >> that the plugin can run from there if desired. >> - The server BOM is also declared in the parent project pom, so that >> we just have it in one place. This probably makes sense for large enough >> projects where it needs to be reused - but at least for this project it >> seems unnecessary. >> >> What I did was to move the jetty bom into test-server: >> diff --git a/pom.xml b/pom.xml >> index bb3edc3..ae118dc 100644 >> --- a/pom.xml >> +++ b/pom.xml >> @@ -24,13 +24,6 @@ >> <type>pom</type> >> <scope>import</scope> >> </dependency> >> - <dependency> >> - <groupId>org.springframework.boot</groupId> >> - <artifactId>spring-boot-dependencies</artifactId> >> - <version>${spring-boot.version}</version> >> - <type>pom</type> >> - <scope>import</scope> >> - </dependency> >> <dependency> >> <groupId>org.yaml</groupId> >> <artifactId>snakeyaml</artifactId> >> diff --git a/test-server/pom.xml b/test-server/pom.xml >> index 6dbf708..31426c0 100644 >> --- a/test-server/pom.xml >> +++ b/test-server/pom.xml >> @@ -16,6 +16,17 @@ >> <maven.compiler.target>17</maven.compiler.target> >> </properties> >> >> + <dependencyManagement> >> + <dependencies> >> + <dependency> >> + <groupId>org.springframework.boot</groupId> >> + <artifactId>spring-boot-dependencies</artifactId> >> + <version>${spring-boot.version}</version> >> + <type>pom</type> >> + <scope>import</scope> >> + </dependency> >> + </dependencies> >> + </dependencyManagement> >> <dependencies> >> <dependency> >> <groupId>${project.groupId}</groupId> >> >> Then, I was able to build and start the server, and start the devmode >> server. I did not go so far as to make changes yet, but I'm not familiar >> with how spring boot likes to work for "dev" mode. >> >> On Friday, February 13, 2026 at 4:55:11 PM UTC-6 [email protected] >> wrote: >> >>> I raised a Spring Boot Jetty issue >>> https://github.com/spring-projects/spring-boot/issues/49220 because I >>> thought there was an issue with Jetty. >>> >>> Turns out, the GWT Code Server is bringing in an old version of Jetty >>> which breaks Spring Boot. >>> >>> When I tell Spring Boot to use the version of Jetty it wants, the GWT >>> Code Server then breaks with the error: >>> >>> [WARNING] java.lang.NoClassDefFoundError: >>> org/eclipse/jetty/server/handler/ContextHandler$Context >>> [WARNING] at >>> com.google.gwt.dev.codeserver.WebServer.start(WebServer.java:125) >>> [WARNING] at >>> com.google.gwt.dev.codeserver.CodeServer.start(CodeServer.java:162) >>> [WARNING] at >>> com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:104) >>> [WARNING] at >>> com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:55) >>> [WARNING] Caused by: java.lang.ClassNotFoundException: >>> org.eclipse.jetty.server.handler.ContextHandler$Context >>> [WARNING] at >>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) >>> [WARNING] at >>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) >>> [WARNING] at >>> java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) >>> [WARNING] ... 4 more >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Reactor Summary for test 1.0-SNAPSHOT: >>> [INFO] >>> [INFO] test ............................................... FAILURE [ >>> 4.688 s] >>> [INFO] test-shared ........................................ SKIPPED >>> [INFO] test-client ........................................ SKIPPED >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD FAILURE >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 5.436 s >>> [INFO] Finished at: 2026-02-14T09:25:21+11:00 >>> [INFO] >>> ------------------------------------------------------------------------ >>> [ERROR] Failed to execute goal >>> net.ltgt.gwt.maven:gwt-maven-plugin:1.2.0:codeserver (default-cli) on >>> project test: Process exited with an error: 1 (Exit value: 1) -> [Help 1] >>> >>> Is there a way to allow Spring Boot to use Jetty 12.1.5, but also let >>> the GWT Code Server use Jetty 9.4.58? >>> >>> (Apologies if this has been asked before, I searched around and couldn't >>> find it) >>> >> -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/7e499e41-4180-43cb-87ac-ddb7cbd3297en%40googlegroups.com.
