Sharing a Project (Buckminster)
< To: Buckminster Project
What is this scenario about?
Harry, a developer has created a project called Hello XML World. The developer Tom wants to help with the development, and asks Harry how to set up the project. This scenario shows how Harry sets up the project manually, and then how the same is achieved using Buckminster.
Sharing without using Buckminster
An empty workspace
Getting the source
Getting the source is not enough
Hey, Harry, this thing does not build!
Harry had forgot to give Tom all the details on how to set up the project. Since Harry (for good reasons) does not want to check in binaries from other sources, he now tells Tom to fetch the missing component from Ibiblio. He instructs Tom where to place it in the project and that Harry also must remove the version information in the file name as manifest otherwise has to be changed for every revision of the used component. Tom agrees that this makes sense and performs the two steps.
Download from IBiblio
Hey, Harry! This still does not build!
There are more problems. One of the projects is still missing a jar file. That jar can be produced by one of the other projects. Harry directs Tom to an Eclipse jar descriptor file in that project and tells him to use the JAR Packager to build the jar.
Change the absolute path
In the JAR Packager, Tom finds an absolute path that only makes sense on Harry's machine. Unfortunately, there is no way to specify this in relative terms, so Tom (and everyone else setting up this project) will just have to manually change this.
Finally the project builds OK
Sharing using Buckminster
Tom, recently having discovered Buckminster, asks Harry if it is OK to automate the process using Buckminster. Tom adds descriptions of how the components depend on each other and where the components can be found (in CVS, and on Ibiblio). This is expressed in some XML files as described in more detail in Hello XML World Example.
Hey Harry, look - no hands!
Tom demonstrates the new setup. Fetching and "installing" things is called materialization in Buckminster terms, and the materialization is started by querying for the top component. Such a query can be entered manually, but Tom has prepared the query and stored it in a file. This type of query is called Component Query (CQUERY). Tom simply uses the File > Open dialog and types in the URL. The file is placed on a web server reachable by everyone.
The CQUERY dialog
Running the CQUERY
This Usage Scenario shows how even a very simple project can be quite difficult to share. With Buckminster, automation of materialization and building is very simple. New users only need one step "materialize using a component query".