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


Reply via email to