Jump to: navigation, search

Difference between revisions of "Sharing a Project (Buckminster)"

Line 1: Line 1:
 
{{Backlink|Buckminster Project}}
 
{{Backlink|Buckminster Project}}
 
=What is this scenario about?=
 
=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.
+
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=
 
=Sharing without using Buckminster=
 
===An empty workspace===
 
===An empty workspace===
Tom starts Eclipse with an empty workspace.  
+
Tom starts Eclipse with an empty workspace.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/empty_workspace.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/empty_workspace.jpg
 
===Getting the source===
 
===Getting the source===
Line 10: Line 10:
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/pfs-wizard.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/pfs-wizard.jpg
 
===Getting the source is not enough===
 
===Getting the source is not enough===
When source access has been configured, Eclipse builds the project. As you can see there are errors.
+
When the source has been checked out into the workspace, Eclipse builds the project. As you can see there are errors.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/broken_workspace.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/broken_workspace.jpg
 
===Hey, Harry, this thing does not build!===
 
===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.
+
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:
 
Creating a jars folder where the component from Ibiblio is downloaded:
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/create_jars_folder.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/create_jars_folder.jpg
  
After download (not shown), the file is renamed:
+
The file is renamed and placed in the correct directory as a step in the download procedure:
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/fetch_and_strip_version_from_ibiblio.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/fetch_and_strip_version_from_ibiblio.jpg
 
===Hey, Harry! This still does not build!===
 
===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.
+
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.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/open_jar_packager.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/open_jar_packager.jpg
  
 
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.
 
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.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/change_absolute_path.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/change_absolute_path.jpg
==Finally the project builds ok==
+
==Finally the project builds OK==
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/ok_workspace.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/ok_workspace.jpg
 
=Sharing using Buckminster=
 
=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 (Buckminster)|Hello XML World Example]].
+
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 (Buckminster)|Hello XML World Example]].
 
==Hey Harry, look - no hands!==
 
==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.
+
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.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/open-cquery.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/open-cquery.jpg
  
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.
+
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.
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/cquery-editor.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/cquery-editor.jpg
  
Line 43: Line 43:
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/ok_workspace.jpg
 
http://www.eclipse.org/buckminster/pub/demo/snapshots/ok_workspace.jpg
 
=Summary=
 
=Summary=
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".
+
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".
 
[[Category:Buckminster]]
 
[[Category:Buckminster]]
 
[[Category:Buckminster Usage Scenarios]]
 
[[Category:Buckminster Usage Scenarios]]

Revision as of 09:25, 23 October 2006

< 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. http://www.eclipse.org/buckminster/pub/demo/snapshots/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. http://www.eclipse.org/buckminster/pub/demo/snapshots/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. http://www.eclipse.org/buckminster/pub/demo/snapshots/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: http://www.eclipse.org/buckminster/pub/demo/snapshots/create_jars_folder.jpg

The file is renamed and placed in the correct directory as a step in the download procedure: http://www.eclipse.org/buckminster/pub/demo/snapshots/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. http://www.eclipse.org/buckminster/pub/demo/snapshots/open_jar_packager.jpg

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. http://www.eclipse.org/buckminster/pub/demo/snapshots/change_absolute_path.jpg

Finally the project builds OK

http://www.eclipse.org/buckminster/pub/demo/snapshots/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. http://www.eclipse.org/buckminster/pub/demo/snapshots/open-cquery.jpg

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. http://www.eclipse.org/buckminster/pub/demo/snapshots/cquery-editor.jpg

Buckminster then runs the query, transitively finds all required components, downloads them, and runs all required actions (such as building the required jar). http://www.eclipse.org/buckminster/pub/demo/snapshots/resolving.jpg

Done

When Buckminster has finished, the workspace is set up, and builds ok. http://www.eclipse.org/buckminster/pub/demo/snapshots/ok_workspace.jpg

Summary

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