Combine javadocs from subprojects doLast

(nathros) #1

I’m using the example from and it is working fine.

task alljavadoc(type: Javadoc) {
	println 'config'
		println 'never reaches here'
		source subprojects.collect { project ->
		destinationDir = new File(buildDir, 'javadoc')
		classpath = files(subprojects.collect { project ->

The code is exposed to the configuration phase, so regenerating the javadoc when it is not needed is slowing down the build process a lot. So I moved it to doLast but the code is never been executed when I call the task. Does type: Javadoc not have a doLast phase?

Run via: gradle alljavadoc

(James Justinic) #2

The doLast {...} block adds the contained code as a task action after the already existing task action. The task never executes either the predefined action to generate the javadoc or your custom action due to up-to-date checking. All of the code in the doLast {...} above is configuration code that should execute in the configuration phase, but the javadoc is not actually generated until the execution phase.

If you are seeing javadoc always generated, I believe you might have an unintetional dependency on the task or other code outside of what you have shared that is causing this.

(nathros) #3

I tried moving it to the execution phase << and the whole block is not been run.

Either way I found a work around:

task alljavadoc(type: Javadoc) {
	if (gradle.startParameter.taskNames.contains("${name}" as String)) {
		// aggregated javadoc code here

It checks if the task has been set to run.