Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

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

Sharing without using Buckminster

An empty workspace

Tom starts Eclipse with an empty workspace. Buckminster empty workspace.jpg

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. Buckminster pfs-wizard.jpg

Getting the source is not enough

When the source has been checked out into the workspace, Eclipse builds the project. As you can see there are errors. Buckminster broken workspace.jpg

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.

Creating a jars folder where the component from Ibiblio is downloaded: Buckminster create jars folder.jpg

Download from IBiblio

The file is renamed and placed in the correct directory as a step in the download procedure: Buckminster fetch and strip version from ibiblio.jpg

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. Buckminster open jar packager.jpg

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. Buckminster change absolute path.jpg

Finally the project builds OK

Buckminster ok workspace.jpg

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. Buckminster open-cquery.jpg

The CQUERY dialog

This opens the CQUERY dialog. There are many options, but in this case everything is set up, and all that is needed is to press the "Resolve and Materialize" button. Buckminster cquery-editor.jpg

Running the CQUERY

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


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


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

Back to the top