On Aug 22, 2009, at 12:03 AM, Adam Murdoch wrote:
Hans Dockter wrote:
I know that some some stuff is a bit rough ATM. I just wanted to
submit it rather quick to avoid merge nightmares as much as
possible (including for myself). But of course everything should
work.
On Aug 21, 2009, at 1:49 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
This is great. It will force us to get multi-project builds
working well for java applications.
Some issues I've seen already:
- The groovydocs don't include anything from gradle-wrapper.
It is Java only. That's why the gradle-wrapper should use the Java
plugin only.
We include the java classes from gradle-core in the groovydoc. We
should either not include any java classes in the groovydoc, or
include all java+groovy in the groovydoc. I think we should include
everything in the groovydoc. As the groovydoc tool improves, this
could become the single API reference.
I think as long as the Groovydoc is not a replacement for javadoc we
might not include any java classes. It is quite a big one to upload
when you do a release. Considering the fact that in particular our
public API will contain less and less groovy classes, I'm not sure if
we should move away from the very robust javadoc.
- The javadocs don't include anything from gradle-core.
I will look into this.
What we want here, I think, is a single javadoc task and a single
groovydoc task in the root project, whose source is the union of
the source from each subproject. We don't care about the javadoc/
groovy doc from each individual subproject.
This is how it is supposed to work. I should have tested it. Which
points out that it might be good to have some tests for our build
(e.g. check that the exploded dist has certain non-empty
directories). But I agree with John, that it should be possible to
generate them for a subproject only (although for the current
Gradle build it doesn't really matter).
Absolutely.
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 should it change, do you think?
Either the code should go into root or into a separate integtest
subproject. I both cases we face the problem of accessing some test
helper classes (e.g. HelperUtil). We could create our own
subproject for them (So far this is about 2 classes).
I don't think a separate project is the right way to go. These
things are part of the core project, just like the API is.
I think it's a pretty common pattern for a project to publish a set
of test fixtures to help clients of the project write tests for
their classes. We should build this concept into the Java plugin.
Something like: A java project may provide any of the following to
other projects:
- An API
- An implementation of that API
- A test fixture API
- An implementation of that API
I agree. I like this much more. This will avoid a lot of the bloat you
often find in Maven multi-project builds.
You could generalise this: A java project has a number of source
sets. Each source set may have an API and an implementation.
Cool.
<snip>
- Hans
--
Hans Dockter
Gradle Project Manager
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email