Seems to be working now, see:

http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?view=markup&pathrev=1094838

for the magic.

On Mon, Apr 18, 2011 at 5:24 PM, Howard Lewis Ship <[email protected]> wrote:
> On Sun, Apr 17, 2011 at 1:30 PM, Adam Murdoch
> <[email protected]> wrote:
>>
>> On 16/04/2011, at 11:25 AM, Howard Lewis Ship wrote:
>>
>> I'm attempting to create aggregated JavaDoc for my multi-module
>> project.  In the top-level build.gradle I've added the following:
>>
>> // Cribbed from
>> https://github.com/hibernate/hibernate-core/blob/master/release/release.gradle#L19
>>
>> javadocBuildDir = dir( buildDirName + "/documentation/javadocs" )
>>
>> task aggregateJavadocs(type: Javadoc) {
>>    description = "Build the aggregated JavaDocs for all modules"
>>    maxMemory = '512m'
>>    destinationDir = javadocBuildDir.dir
>>    configure(options) {
>>        // overview = new File( projectDir, 'src/javadoc/package.html' )
>>        // stylesheetFile = new File( projectDir,
>> 'src/javadoc/stylesheet.css' )
>>        windowTitle = 'Tapestry API Documentation'
>>        docTitle = "Tapestry JavaDoc ($project.version)"
>>        bottom = "Copyright &copy; 2003-2011 <a
>> href=\"http://tapestry.apache.org\";>The Apache Software
>> Foundation</a>."
>>        use = true
>>        links = [ 'http://download.oracle.com/javase/6/docs/api/',
>> 'http://download.oracle.com/javaee/6/api/' ]
>>    }
>>
>>    subprojects.each { subProject->
>>
>> println subProject
>>
>>        subProject.sourceSets.each { set ->
>>            if (!"test" == set.name) {
>>                source set.java
>>
>>                if (classpath) {
>>                    classpath += set.classes + set.compileClasspath
>>                }
>>                else {
>>                    classpath = set.classes + set.compileClasspath
>>                }
>>            }
>>        }
>>    }
>> }
>>
>> This looks like a timing problem. The build script for the root project
>> executes before the build scripts for the subprojects. This means, if you
>> don't have something like subprojects { apply plugin: 'java' } in the root
>> build script, when your javadoc configuration code executes, the subprojects
>> won't have the java plugin applied.
>> There's a few options for dealing with this.
>> One is to make sure the java plugin has been applied to the projects which
>> you want to document, so in your root build script, do something like:
>> subprojects { apply plugin: 'java' }
>
> This is already present:
>
> http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?view=markup
>
>
>> Another option is to specify that (some of) the root build script must
>> execute after the subprojects' build scripts have been executed. So, in your
>> root build script you can do something like:
>> // code that executes before the subprojects goes here
>> subprojects.each { evaluationDependsOn(it.name) }
>
> This looks promising; I'll be trying it out shortly.
>
>> // code that executes after the subprojects goes here
>> task aggregateJavadocs(...) { ... }
>> Timing problems are a big source of confusion in Gradle, and we want to make
>> this easier to deal with - even if it's just some better error reporting.
>> One potential change we are thinking of making is to bust the configuration
>> stage up into several discrete stages. For example, we might first configure
>> the all project objects, then the domain objects owned by the projects, and
>> then finally the tasks. This way, your code above would just work. What is
>> interesting about this approach is that we could model it using tasks. Then,
>> we could use all the standard task mechanisms for customising the order, and
>> adding or removing configuration behaviour. This would also mean we could
>> potentially use some other task features, such as incremental build, to
>> minimise the work which has to be done at configuration time.
>
>
>>
>>
>> This fails immediately:
>>
>> $ gr agg
>> project ':plastic'
>>
>> FAILURE: Build failed with an exception.
>>
>> * Where:
>> Build file '/Users/hlship/workspaces/tapestry/tapestry5/build.gradle' line:
>> 37
>>
>> * What went wrong:
>> A problem occurred evaluating root project 'tapestry5'.
>> Cause: Could not find property 'sourceSets' on project ':plastic'.
>>
>> * Try:
>> Run with --stacktrace option to get the stack trace. Run with --info
>> or --debug option to get more log output.
>>
>> BUILD FAILED
>>
>> Total time: 1.697 secs
>> ~/workspaces/tapestry/p
>> $
>>
>> I'm on Gradle 1.0-milestone-1
>>
>> Full source here: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/
>>
>> With debug, not any more helpful:
>>
>> 18:18:58.997 [INFO] [org.gradle.BuildLogger] Projects loaded. Root
>> project using build file
>> '/Users/hlship/workspaces/tapestry/tapestry5/build.gradle'.
>> 18:18:58.999 [INFO] [org.gradle.BuildLogger] Included projects: [root
>> project 'tapestry5', project ':plastic', project
>> ':tapestry-annotations', project ':tapestry-beanvalidator', project
>> ':tapestry-core', project ':tapestry-func', project
>> ':tapestry-hibernate', project ':tapestry-hibernate-core', project
>> ':tapestry-ioc', project ':tapestry-jmx', project ':tapestry-json',
>> project ':tapestry-spring', project ':tapestry-test', project
>> ':tapestry-upload', project ':tapestry-yuicompressor']
>> 18:18:59.000 [INFO] [org.gradle.configuration.BuildScriptProcessor]
>> Evaluating root project 'tapestry5' using build file
>> '/Users/hlship/workspaces/tapestry/tapestry5/build.gradle'.
>> 18:18:59.354 [QUIET] [system.out] project ':plastic'
>> 18:18:59.363 [DEBUG] [org.gradle.configuration.BuildScriptProcessor]
>> Timing: Running the build script took 0.362 secs
>> 18:18:59.378 [ERROR] [org.gradle.BuildExceptionReporter]
>> 18:18:59.380 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE:
>> Build failed with an exception.
>> 18:18:59.382 [ERROR] [org.gradle.BuildExceptionReporter]
>> 18:18:59.383 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
>> 18:18:59.383 [ERROR] [org.gradle.BuildExceptionReporter] Build file
>> '/Users/hlship/workspaces/tapestry/tapestry5/build.gradle' line: 37
>> 18:18:59.384 [ERROR] [org.gradle.BuildExceptionReporter]
>> 18:18:59.385 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
>> 18:18:59.386 [ERROR] [org.gradle.BuildExceptionReporter] A problem
>> occurred evaluating root project 'tapestry5'.
>> 18:18:59.389 [ERROR] [org.gradle.BuildExceptionReporter] Cause: Could
>> not find property 'sourceSets' on project ':plastic'.
>> 18:18:59.390 [ERROR] [org.gradle.BuildExceptionReporter]
>>
>>
>> I'm kind of at a loss here. This feels like something I should just be
>> able to do with a line of configuration somewhere.
>>
>> The plastic module does have no dependencies at all.  What's strange
>> is that the error is that the sourceSets property doesn't exist ...
>> not that its value is null or empty.  Seems like an order of
>> evaluation problem, but I don't get it.
>>
>>
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator of Apache Tapestry
>>
>> The source for Tapestry training, mentoring and support. Contact me to
>> learn how I can get you up and productive in Tapestry fast!
>>
>> (971) 678-5210
>> http://howardlewisship.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>    http://xircles.codehaus.org/manage_email
>>
>>
>>
>>
>> --
>> Adam Murdoch
>> Gradle Co-founder
>> http://www.gradle.org
>> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
>> http://www.gradleware.com
>>
>>
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to