jamesfredley opened a new issue, #16161:
URL: https://github.com/apache/grails-core/issues/16161

   The Micronaut island is excluded from any build whose root Groovy version is 
not Groovy 5. On a Groovy 6 build - such as the Grails 9 / Groovy 6 canary 
(#15558) and any Groovy 6 snapshot produced from it - the following are 
silently dropped from the build and therefore absent from published artifacts:
   
   - `grails-micronaut-bom`
   - the Micronaut-dependent modules in the island
   - the `grails-test-examples` that consume `grails-micronaut-bom`
   
   ## Why
   
   `settings.gradle` gates the island on both the build JDK and the Groovy 
major version:
   
   ```groovy
   def buildGroovyVersionLine = file('dependencies.gradle').readLines().find { 
it.contains("'groovy.version'") }
   def buildGroovySupportsMicronaut = buildGroovyVersionLine?.contains("'5.") 
?: false
   def skipMicronautProjects = explicitlySkipMicronaut ||
           ((!buildJdkSupportsMicronaut || !buildGroovySupportsMicronaut) && 
!explicitlyIncludeMicronaut)
   ```
   
   The island builds against the Micronaut 5 platform, which pins Groovy 5 and 
Spock `2.4-groovy-5.0`, so it cannot participate in the same build graph as a 
different root Groovy major. It also targets JVM 25 bytecode, which is the 
separate pre-existing reason it is excluded on a sub-25 JDK.
   
   The gate is deliberate and correct as a stopgap: without it, a Groovy 6 
build fails outright on the island's Groovy 5 constraints. But it means a 
Groovy 6 build is quietly incomplete rather than failing loudly.
   
   ## What needs to happen
   
   Someone needs to work out how the Micronaut island can participate in a 
Groovy 6 build, or how Grails should ship without it on that line. Open 
questions:
   
   1. Does the Micronaut 5 platform work on Groovy 6 at all, or does it need a 
Micronaut release built against Groovy 6?
   2. If the island cannot move, should `grails-micronaut-bom` and the 
Micronaut modules be published from a separate Groovy 5 build so Groovy 6 
snapshots are still complete?
   3. Should a Groovy 6 build FAIL loudly when the island is skipped, instead 
of silently excluding it, so the incompleteness is not discovered downstream?
   4. The island also pins Spock `2.4-groovy-5.0`, which is incompatible with 
Groovy 6 independently of Micronaut - see #16157 for the Spock situation.
   
   ## Workaround
   
   `-PincludeMicronautProjects` force-includes the island on any JDK and any 
Groovy version. It is expected to fail on a Groovy 6 build; it exists for 
deliberate experimentation.
   
   ## Context
   
   Raised while preparing #15558 (Grails 9 on Groovy 6.0.0-beta-2). Groovy 6 
RC1 is expected shortly, so Grails 9 needs a position on this. Accepting the 
exclusion is a conscious decision for now, and this issue records what was 
deferred rather than leaving it implicit in a `settings.gradle` predicate.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to