Re: Using javaVersion for groovydoc in 4.0.27

Per Nyfelt <[email protected]> Thu, 29 May 2025 12:50:04 +0200
Newsgroups gmane.comp.lang.groovy.user
Organization Alipsa HB
Message-ID <[email protected]>
In case someone else want to do this, here's what I did to get the 
workaround working:

1. Add the dependencies:

implementation "org.apache.groovy:groovy:4.0.27"

// only needed for groovydoc so limit to compilescope
compileOnly "org.apache.groovy:groovy-ant:4.0.27"
compileOnly "org.apache.groovy:groovy-templates:4.0.27"
compileOnly 'com.github.javaparser:javaparser-core:3.26.4'

2. Register a new groovydoc task since overriding tasks are deprecated 
in gradle

tasks.register('antGroovydoc', DefaultTask){ group ='documentation' description ='Generate Groovydoc using Ant with custom config' doLast{ def outputDir =layout.buildDirectory.dir("groovydocant").get().asFile ant.taskdef(
             name:'groovydoc',
             classname:'org.codehaus.groovy.ant.Groovydoc',
             classpath: sourceSets.main.compileClasspath.asPath )

         ant.groovydoc(
             destdir: outputDir,
             sourcepath: sourceSets.main.groovy.srcDirs.join(':'),
             packagenames:'*',
             javaVersion:'JAVA_21' )
     } }

3. Make the new groovytask part of the normal build (optional)

tasks.named('build'){ dependsOntasks.named('antGroovydoc')
}

4. Make sure javadocJar picks up the new location

tasks.register('javadocJar', Jar){ dependsOntasks.named('antGroovydoc')
     archiveClassifier.set('javadoc')
     fromlayout.buildDirectory.dir("groovydocant")
}

Regards,
Per

On 5/29/25 10:13, Per Nyfelt wrote:
> Great, thanks Paul! The workaround using ant directly in gradle works 
> fine!
>
> I created a feature request to support the javaVersion property to the 
> gradle team here https://github.com/gradle/gradle/issues/33659.
>
> Best regards,
>
> Per
>
> On 5/29/25 08:52, Paul King wrote:
>> Yes, Gradle doesn't know about those 4.0.27 changes yet. Feel free to
>> pester them to add that in an upcoming Gradle release.
>>
>> For now, you can create a custom groovy task, sort of like where
>> Grails is possibly headed:
>>
>> https://github.com/apache/grails-core/blob/groovydoc-tool-rewrite/buildSrc/src/main/groovy/org/apache/grails/internal/build/GrailsGroovydocWorker.groovy 
>>
>>
>> Or, just call the commandline or Ant task making sure that Groovy
>> 4.0.27 (groovy, groovy-groovydoc, groovy-ant if using ant) is on the
>> classpath:
>>
>> tasks.register('runGroovyDoc', JavaExec) {
>>      classpath = sourceSets.main.runtimeClasspath
>>      mainClass = 'org.codehaus.groovy.tools.groovydoc.Main'
>>      args = ['-d', 'build/groovydoc', '-sourcepath',
>> sourceSets.main.groovy.srcDirs.join(':'), '-javaVersion', 'JAVA_17',
>> '.']
>> }
>>
>> tasks.register('runGroovyDocAnt') {
>>      doLast {
>>          ant.taskdef(name: 'groovydoc', classname:
>> 'org.codehaus.groovy.ant.Groovydoc', classpath:
>> sourceSets.main.runtimeClasspath.asPath)
>>          ant.groovydoc(
>>              destdir: 'build/groovydocant',
>>              sourcepath: sourceSets.main.groovy.srcDirs.join(':'),
>>              packagenames: '*',
>>              javaVersion: 'JAVA_17') {
>>          }
>>      }
>> }
>>
>>
>> Cheers,
>> Paul.
>>
>> On Thu, May 29, 2025 at 5:07 AM Per Nyfelt <[email protected]> wrote:
>>> Hi,
>>>
>>> I am keen to use the new javaVersion property added to GroovyDoc in 
>>> 4.0.27 but cannot figure it out. According to the gradle 
>>> documentation, "The version of the Groovydoc that is used, is the 
>>> one from the Groovy dependency defined in the build script." so i 
>>> did this:
>>>
>>> add implementation `"org.apache.groovy:groovy-ant:4.0.27"` to 
>>> dependencies
>>>
>>> add a groovydoc config
>>>
>>> groovydoc {
>>>      docTitle = "${project.name} ${project.version}"
>>>      windowTitle = "${project.name} ${project.version}"
>>>      link 'https://docs.oracle.com/en/java/javase/21/docs/api/', 
>>> 'java.'
>>>      javaVersion = 'JAVA_21'
>>> }
>>>
>>> But gradle is unhappy with this:
>>>
>>>> Could not set unknown property 'javaVersion' for task 
>>>> ':matrix-spreadsheet:groovydoc' of type 
>>>> org.gradle.api.tasks.javadoc.Groovydoc.
>>> Has anyone got this to work and could share some insights?
>>>
>>>