Hi,
I would like to start talking about 'arbitrary project layouts': what
that means, how we might solve the problem, and what can we do to move
towards the solution.
To me, it means being able to control the location of any file or
directory that gradle uses to load stuff, cache stuff, and generate
stuff. It also means having reasonable defaults for all of these things,
so I don't need to care if I don't want to.
Currently, the locations for each project are:
- project directory
- build file location
- build directory
- build file cache directory
There's also name and path for each project. These aren't locations as
such, but their default values are determined by locations, and there's
no way to override their defaults.
Additionally, the locations for the build (or maybe the root project):
- root directory
- settings file location
- settings file cache directory
- inter-project build resolver directory
- ivy cache directory
- wrapper dist cache directory
- probably some other things like default imports file(s),
plugin.properties, etc.
I'd like to be able to declare most of these locations in a file (or
files) . Then I can do things like check them into source control and
have the same layout on multiple machines, or share the same layout
between several people. Even better if those files are scripts so that I
can write code to declare my layout.
Overriding default locations from the command line is not really
something I want to be able to do, but I guess it should be possible for
most of the above locations.
The obvious place for most of these locations is in the settings file.
Some don't really make sense there (eg settings cache dir). One option
for these would be to add a gradle init script in gradle user home which
can override pretty much anything.
The things that make sense to do through the settings file are:
- build resolver directory
- ivy cache directory
- for each project:
- name
- path (not for the root project)
- project dir
- build file
- build dir
I'll leave it for another email to discuss how I think this might work,
and how the command-line might work.
Adam
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email