# Excluding generated source from javadoc

**URL:** <https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595>\
**Category:** Old Forum Archive\
**Created:** [December 20, 2011, 7:24am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595 "2011-12-20T07:24:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 7:24am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/1 "2011-12-20T07:24:00Z")

</div>

How do I get generated sources excluded from javadoc task as sources? I tried the following, but it did not work:

```gradle
task aggregateJavadocs(type: Javadoc) {
    ...
    exclude " **/generated-src/**"
}

```

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 4:30pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/2 "2011-12-20T16:30:00Z")

</div>

Not sure what the problem is. The syntax is correct. We use this in the Gradle build and it seems to work fine:

```gradle
task javadoc(type: Javadoc) {
  ...
  exclude ' **/internal/**'
}

```

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 4:34pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/3 "2011-12-20T16:34:00Z")

</div>

Could it be timing? I have a bit of a unique javadoc task:

```gradle
task aggregateJavadocs(type: Javadoc) {
    // exclude any generated sources
    exclude " **/generated-src/**"
      // process each project, building up:
    //
    1) appropriate sources
    //
    2) classpath
    //
    3) the package list for groups
    Set<String> apiPackages = new HashSet<String>()
    Set<String> spiPackages = new HashSet<String>()
    Set<String> internalPackages = new HashSet<String>()
    parent.subprojects.each{ Project subProject->
        // skip certain sub-projects
        if ( ! ['release','documentation'].contains( subProject.name ) ) {
            subProject.sourceSets.each { SourceSet sourceSet ->
                // skip certain source sets
                if ( ! ['test','matrix'].contains( sourceSet.name ) ) {
                    source sourceSet.java
                      if( classpath ) {
                        classpath += sourceSet.classes + sourceSet.compileClasspath
                    }
                    else {
                        classpath = sourceSet.classes + sourceSet.compileClasspath
                    }
                      sourceSet.java.each { javaFile ->
                        final String packageName = determinePackageName( sourceSet.java, javaFile );
                        if ( packageName.endsWith( ".internal" ) || packageName.contains( ".internal." ) ) {
                            internalPackages.add( packageName );
                        }
                        else if ( packageName.endsWith( ".spi" ) || packageName.contains( ".spi." ) ) {
                            spiPackages.add( packageName );
                        }
                        else if ( packageName.startsWith( "org.hibernate.testing" ) ) {
                            // do nothing as testing support is already handled...
                        }
                        else {
                            apiPackages.add( packageName );
                        }
                    }
                }
            }
        }
    }
      // apply standard config
    description = "Build the aggregated JavaDocs for all modules"
    ...
    configure( options ) {
        ...
        group( 'API', apiPackages.asList() )
        group( 'SPI', spiPackages.asList() )
        group( 'Internal', internalPackages.asList() )
        group ( 'Testing Support', ['org.hibernate.testing*'] )
    }
}

```

Those closures seem to fire right off the bat.

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 4:38pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/4 "2011-12-20T16:38:00Z")

</div>

Did you paste this twice?

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 4:40pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/5 "2011-12-20T16:40:00Z")

</div>

I dont think so

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 4:42pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/6 "2011-12-20T16:42:00Z")

</div>

I’ll filter out the unimportant stuff and see if that helps…

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 4:42pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/7 "2011-12-20T16:42:00Z")

</div>

_task aggregrateJavadocs_ appears twice in the code snippet. Is this highlighting gone (very) wrong?

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 4:44pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/8 "2011-12-20T16:44:00Z")

</div>

The markup parser did not like something in the original paste…

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 4:52pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/9 "2011-12-20T16:52:00Z")

</div>

Can you send me the original snippet via email so that we can reproduce the parser problem?

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 4:54pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/10 "2011-12-20T16:54:00Z")

</div>

There shouldn’t be a timing problem with _exclude_, but there will be one with the groups. One solution is to do the whole javadoc task configuration in a _gradle.projectsEvaluated {}_.

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 5:31pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/11 "2011-12-20T17:31:00Z")

</div>

groups actually works

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 5:48pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/12 "2011-12-20T17:48:00Z")

</div>

I really only want it to execute that stuff when the task executes. Is that possible?

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 20, 2011, 6:14pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/13 "2011-12-20T18:14:00Z")

</div>

The build file can be found here in case you wanted to verify: [https://github.com/hibernate/hibernate-core/blob/master/release/release.gradle](https://github.com/hibernate/hibernate-core/blob/master/release/release.gradle)

Btw, I did try wrapping all that ‘parent.subprojects.each’ processing within a gradle.projectsEvaluated {} because you had mentioned that on another post, but that led to some really strange errors.

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 6:51pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/14 "2011-12-20T18:51:00Z")

</div>

Currently the only way to do this is _gradle.taskGraph.whenReady { if (it.hasTask(":foo")) { … } }_. However you can abstract that into your own method. Note that you can’t add tasks or task dependencies at this point.

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 6:57pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/15 "2011-12-20T18:57:00Z")

</div>

You are probably lucky. If someone adds a source set after that javadoc configuration has run (e.g. by applying the “java” plugin in a subproject’s build script), the source set won’t be picked up by your code. Unless you have put special measures in place like _subprojects { rootProject.evaluationDependsOn(it) }_.

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 20, 2011, 6:59pm UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/16 "2011-12-20T18:59:00Z")

</div>

Including the _configure(options) { … }_ part?

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 21, 2011, 2:05am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/17 "2011-12-21T02:05:00Z")

</div>

No, i dont think so. I think just the closure block

---

<div class="post-metadata">

**Author:** ![Peter\_Niederwieser](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Peter\_Niederwieser](https://discuss.gradle.org/u/Peter_Niederwieser)\
**Post date:** [December 21, 2011, 2:07am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/18 "2011-12-21T02:07:00Z")

</div>

That won’t work because then you have a delayed computation whose results are used eagerly (i.e. before they have been fully computed).

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 21, 2011, 2:08am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/19 "2011-12-21T02:08:00Z")

</div>

The root project has dependsOnChildren() The project being executed is the final child; it depends on all the other children, but none of them depend on it.

Not sure if its really luck 😉

---

<div class="post-metadata">

**Author:** ![Steve\_Ebersole](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/steve_ebersole/32/9763_2.png) [@Steve\_Ebersole](https://discuss.gradle.org/u/Steve_Ebersole)\
**Post date:** [December 21, 2011, 2:10am UTC](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595/20 "2011-12-21T02:10:00Z")

</div>

I can try again to see the outcome… but do you really think that will have any bearing on making the exclusion actually work?

[Next page](https://discuss.gradle.org/t/excluding-generated-source-from-javadoc/7595.md?page=2)
