Skip to main content
Jump to: navigation, search

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 aceheived using Buckminster.

Sharing without using Buckminster

An empty workspace

Tom starts Eclipse with an empty workspace.

Getting the source

Harry tells Tom that the source is in CVS, and that a CVS Team Project Set file is available to aid in setting this up. Tom runs the wizard that imports a Team Project Set.

Getting the source is not enough

When source access has been configured, Eclipse builds the project. As you can see there are errors.

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 compoment. Tom agrees that this makes sense and performs the two steps.

Creating a jars folder where the component from Ibiblio is downloaded:

After download (not shown), the file is renamed:

Hey, Harry! This still does not build!

There are more problems. One of the projects contains a jar that needs to be built. Harry tells Tom to use the JAR Packagager to solve this.

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, a Buckminster user 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 dialoge and types in the URL. The file is placed on a web server reachable by everyone.

This opens the CQUERY dialogue. There are many options, but in this case everything is set up, and all that is needed is to press the "Materialize" button.

Buckminster then runs the query, transitively finds all required components, downloads them, and runs all required actions (such as building the required jar).


When Buckminster has finished, the workspace is set up, and builds ok.


This Usaqe 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".

Back to the top