Hans Dockter wrote:
On Aug 21, 2009, at 1:52 AM, Adam Murdoch wrote:
Hans Dockter wrote:
I have just submitted a new build structure for the Gradle build.
The Gradle build is now a multi-project build with a root project
and two subprojects.
root
- gradle-core (which contains everything except wrapper)
- gradle-wrapper
ATM root is doing user's guide, distribution, release and integtest.
The integtest are still part of gradle-core but executed from root.
Although this shows the enormous flexibility of Gradle it probably
should not remain like this.
How do we want to go from here? Some idea:
root (integtest (including dealing with the integ test sources),
distribution, release
- user's guide
- gradle-ui
- gradle-wrapper
- gradle-core
- plugins
-- osgi
-- jetty
-- eclipse
-- maven
-- ...
What should we do with the website? I'd much rather it were under
gradle-core/trunk, along with everything else.
That would make sense. We have to do the merging then, which is quite
painful as long as we use svn. But therefore we don't need to specify
the referring gradle working copy and manually build the website docs.
And the release could be truly 1-click (and not 2-click as it is now).
We have a few options other than making it a sub-project:
1. It is a stand-alone build, but because it is in the same source tree
as the main build, the path to the working copy can default to something
useful.
2. As for 1., plus we move the release stuff into an aggregating build
which co-ordinates building and publishing both the distribution and the
website.
3. As for 1., plus we add some way for the website build to trigger the
building of the artifacts it needs from the distribution build. For
example, we could provide a simple way to execute another Gradle build:
task buildDocs << {
def buildResult = gradle.run(projectdir: gradleMainBuild, tasks:
'websiteDocs')
websiteDocsDir =
buildResult.gradle.project(':gradle-docs').websiteDocsDir
}
Or we could add a way to register how to build an external dependency:
dependencies {
website group: 'org.gradle', name: 'gradle-docs' {
builtBy 'buildDocs'
}
}
task buildDocs << {
// run 'websiteDocs' tasks in main build
}
or perhaps you might register this at the repository level.
Adam
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email