Changes since 25.0.8
New features
-
BuildFrontend Incremental build (#23884)
Commit · Pull requestAdd incremental build to the buildFrontend task. Closes #17354
Fixes
-
Prevent stale JAR cache in
Reflectorunder Maven daemon (mvnd) (#23863)
Commit · Pull requestMirror the Gradle daemon fix (33fa374) in the Maven plugin's
ReflectorandReflectorClassLoader/CombinedClassLoader: - ExtractReflectionsClassFinder.disableJarCaching()as a public utility so both plugins can reuse it. - Wrapjar:URLs inReflectorClassLoader.getResource()andgetResources()(flow-maven-plugin) andCombinedClassLoader(flow-dev-bundle-plugin) withuseCaches(false)to prevent staleJarFileFactoryentries across daemon builds. - MakeReflectorimplementCloseablewith aclose()method that releases theURLClassLoaderfile handles, and register aCleaneraction for best-effort GC cleanup of abandoned instances. - Close the temporaryReflectorinFlowModeAbstractMojo.isHillaAvailable(MavenProject)via try-with-resources. Releated to #15458 -
Prevent addon stylesheet links from being removed during CSS live reload (#23892) (CP: 25.0)
Commit · Pull request · Issue -
Prevent stale JAR cache in
ReflectionsClassFinderunder Gradle daemon
Commit · Pull request · IssueClose
URLClassLoaderon cleanup to release JAR file handles, and disable JVM-level JAR caching ingetResource()by wrappingjar:URLs with aURLStreamHandlerthat setsuseCaches(false). The Gradle daemon reuses JVMs across builds. When a sibling module's JAR is rewritten, two independent caching layers can hold stale file handles: 1.URLClassLoaderinternal cache (URLClassPath→JarLoader) 2.JarFileFactorystatic HashMap (populated viaJarURLConnection) TheURLClassLoader.close()call addresses layer 1, but layer 2 is JVM-global and independent of the class loader. SettinguseCaches(false)onjar:URL connections preventsJarFileFactoryfrom cachingJarFileinstances, matching the approach used by Spring'sPathMatchingResourcePatternResolver(SPR-4639). -
Propagate forceInstantiation and recreateLayoutChain flags through forward/reroute (#23848) (CP: 25.1) (#23954) (CP: 25.0)
Commit · Pull request -
Move thread start out of DevServerWatchDog constructor (#23898)
Commit · Pull requestStarting a thread in a constructor can expose a partially constructed object. Extract the thread start into a separate start() method that callers invoke after construction completes.
-
Route with context path name (#23836)
Commit · Pull request · Issuethe same start as the context path from clearing context path out from the url when using react router.
-
Move import statements to top in generated web component imports file (#23817) (CP: 25.0)
Commit · Pull requestThis PR cherry-picks changes from the original PR #23817 to branch 25.0. --- #### Original PR description >
AbstractUpdateImports.process()already reordersimportlines to > the top forgeneratedFlowImports, but the same sorting was not > applied togeneratedFlowWebComponentImports. This caused interleaved >importand non-import lines (e.g.injectGlobalWebcomponentCss()> calls mixed withimportstatements) in the web component output. > > Extract a reusablemoveImportsToTop()method and apply it both in >process()for main imports and inmergeWebComponentOutputLines()> after merging and deduplicating the web component sources. > > Related to #23689 (comment) -
Improve npm resolution for non-windows (#23810)
Commit · Pull requestAdds another potential path to the npm resolver algorithm to make it compatible with node installation performed by frontend-maven-plugin