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 © 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
